### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

When invoking a lambda with a nodejs runtime and local executor, localstack is unable to handle payloads containing a single quote.

### Expected Behavior

Locally executed nodejs lambdas should be able to handle any stringified json payload

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

https://github.com/alxyuu/localstack-issue

### Environment

```markdown
- OS: MacOS 11.5.2
- LocalStack: latest (0.12.18)
```


### Anything else?

The culprit appears to be in how node gets executed locally, with a single quoted eval:
https://github.com/localstack/localstack/blob/812acc1226537ee92477bd91596de200b8888a6c/localstack/services/awslambda/lambda_executors.py#L1262-L1270

doing something like `event_json_string.replace("'", "'\\''")` may be a simple resolution to the issue.
result = self.lambda_client.invoke(
            FunctionName=TEST_LAMBDA_NAME_JAVA,
            InvocationType="Event",
            Payload=b'{"Records": [{"dynamodb": {"Message": "{}"}}]}',
        )
        self.assertEqual(202, result["StatusCode"])
    def test_kinesis_invocation(self):
        payload = b'{"Records": [{"kinesis": {"data": "dGVzdA==", "partitionKey": "partition"}}]}'
        result = self.lambda_client.invoke(
            FunctionName=TEST_LAMBDA_NAME_JAVA_KINESIS, Payload=payload
        )
        result_data = result["Payload"].read()
        self.assertEqual(200, result["StatusCode"])
        self.assertEqual('"test "', to_str(result_data).strip())
    def test_kinesis_event(self):
        result = self.lambda_client.invoke(
            FunctionName=TEST_LAMBDA_NAME_JAVA,
            InvocationType="Event",
            Payload=b'{"Records": [{"Kinesis": {"Data": "data", "PartitionKey": "partition"}}]}',
        )
        result_data = result["Payload"].read()
        self.assertEqual(202, result["StatusCode"])
        self.assertEqual("", to_str(result_data).strip())
    def test_stream_handler(self):
        result = self.lambda_client.invoke(FunctionName=TEST_LAMBDA_NAME_JAVA_STREAM, Payload=b"{}")
        result_data = result["Payload"].read()
        self.assertEqual(200, result["StatusCode"])
        self.assertEqual("{}", to_str(result_data).strip())
    def test_serializable_input_object(self):
        result = self.lambda_client.invoke(