### 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 = lambda_client.invoke(
            FunctionName=lambda_name, Payload=json.dumps(payload), LogType="Tail"
        )
        payload = json.loads(to_str(result["Payload"].read()))
        self.assertEqual(200, result["StatusCode"])
        self.assertEqual("Unhandled", result["FunctionError"])
        self.assertEqual("$LATEST", result["ExecutedVersion"])
        self.assertIn("Test exception", payload["errorMessage"])
        self.assertIn("Exception", payload["errorType"])
        self.assertEqual(list, type(payload["stackTrace"]))
        log_result = result.get("LogResult")
        self.assertTrue(log_result)
        logs = to_str(base64.b64decode(to_str(log_result)))
        self.assertIn("START", logs)
        self.assertIn("Test exception", logs)
        self.assertIn("END", logs)
        self.assertIn("REPORT", logs)
        
        sqs_client.delete_queue(QueueUrl=queue_url)
        lambda_client.delete_function(FunctionName=lambda_name)
    def test_success_destination(self):
        payload = {}
        _assess_lambda_destination_invocation("Success", payload, self)
    def test_failure_destination(self):
        payload = {lambda_integration.MSG_BODY_RAISE_ERROR_FLAG: 1}
        _assess_lambda_destination_invocation("RetriesExhausted", payload, self)
    def test_add_lambda_permission(self):
        function_name = "lambda_func-{}".format(short_uid())
        testutil.create_lambda_function(
            handler_file=TEST_LAMBDA_ECHO_FILE,