### 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.
self.assertEqual(
            lambda_request_context_resource_path,
            content["requestContext"]["resourcePath"],
        )
        
        testutil.delete_lambda_function(lambda_name)
    def test_upload_lambda_from_s3(self):
        lambda_name = "test_lambda_%s" % short_uid()
        bucket_name = "test-bucket-lambda"
        bucket_key = "test_lambda.zip"
        
        zip_file = testutil.create_lambda_archive(
            load_file(TEST_LAMBDA_PYTHON), get_content=True, libs=TEST_LAMBDA_LIBS
        )
        self.s3_client.create_bucket(Bucket=bucket_name)
        self.s3_client.upload_fileobj(BytesIO(zip_file), bucket_name, bucket_key)
        
        self.lambda_client.create_function(
            FunctionName=lambda_name,
            Runtime=LAMBDA_RUNTIME_PYTHON37,
            Handler="handler.handler",
            Role="r1",
            Code={"S3Bucket": bucket_name, "S3Key": bucket_key},
            Timeout=10,
        )
        
        data_before = b'{"foo": "bar with \'quotes\\""}'
        result = self.lambda_client.invoke(FunctionName=lambda_name, Payload=data_before)
        data_after = json.loads(result["Payload"].read())
        self.assertEqual(json.loads(to_str(data_before)), data_after["event"])