### 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.
listener_func=process_records,
        wait_until_started=True,
    )
    kinesis = aws_stack.connect_to_service("kinesis")
    stream_summary = kinesis.describe_stream_summary(StreamName=stream_name)
    assert 1 == stream_summary["StreamDescriptionSummary"]["OpenShardCount"]
    num_events_kinesis = 10
    
    start = time.perf_counter()
    kinesis.put_records(
        Records=[
            {"Data": '{"batch": 0}', "PartitionKey": "test_%s" % i}
            for i in range(0, num_events_kinesis)
        ],
        StreamName=stream_name,
    )
    assert (time.perf_counter() - start) < 1  
    kinesis.put_records(
        Records=[
            {"Data": '{"batch": 1}', "PartitionKey": "test_%s" % i}
            for i in range(0, num_events_kinesis)
        ],
        StreamName=stream_name,
    )
    def get_events():
        events = get_lambda_log_events(function_name, regex_filter=r"event.*Records")
        assert len(events) == 2
        return events
    events = retry(get_events, retries=5)
    def assertEvent(event, batch_no):