Guys,

I've started using Localstack recently and loving it so far. I've ran into an issue and can't figure out what I am missing in my configuration if there is any.

So, i've managed to configure and test the following successfully

1.  `
API GW --> SQS` - If I post a message to the HTTP Endpoint it gets to SQS and I see SQS response (Default SQS style, i.e SendMessageResponse XML)

2. `SQS --> Lambda` - If I post a message into SQS manually, then corresponding Lambda gets triggered (I see Lambda logs) and I see SQS response (Default SQS style, i.e SendMessageResponse XML)

But If I combine these two i.e

`API GW --> SQS --> Lambda` - then

- I see Lambda is being excuted (i see lambda logs  exactly how they are in 2 above)
- But don't get SQS response (Default SQS style, i.e SendMessageResponse XML)
- Following exception is being thrown

```
localstack_1  | 2019-09-25T14:09:53:ERROR:localstack.services.generic_proxy: Error forwarding request: object supporting the buffer API required Traceback (most recent call last):
localstack_1  |   File "/opt/code/localstack/localstack/services/generic_proxy.py", line 239, in forward
localstack_1  |     path=path, data=data, headers=forward_headers)
localstack_1  |   File "/opt/code/localstack/localstack/services/sqs/sqs_listener.py", line 49, in forward_request
localstack_1  |     new_response = self._send_message(path, data, req_data, headers)
localstack_1  |   File "/opt/code/localstack/localstack/services/sqs/sqs_listener.py", line 237, in _send_message
localstack_1  |     message_attr_hash=md5(data),
localstack_1  |   File "/opt/code/localstack/localstack/utils/common.py", line 304, in md5
localstack_1  |     m.update(to_bytes(string))
localstack_1  | TypeError: object supporting the buffer API required
```

`Implement API Gateway SQS proxy` is recently implented with PR https://github.com/localstack/localstack/pull/1354 (Thanks to @mathewpower )

and I'm wondering is this anything to do with missing `data=` parameter at 
https://github.com/mathewpower/localstack/blob/028cc8660317aac426c1195ba7d8dedf45ef9007/localstack/services/apigateway/apigateway_listener.py#L86

Really appreciate your help on this.

Thanks 

data_str = json.dumps(data) if isinstance(data, (dict, list)) else data
                    account_id = uri.split(':lambda:path')[1].split(':function:')[0].split(':')[-1]
                    source_ip = headers['X-Forwarded-For'].split(',')[-2]
                    
                    
                    request_context = {
                        'path': relative_path,
                        'accountId': account_id,
                        'resourceId': resource.get('id'),
                        'stage': stage,
                        'identity': {
                            'accountId': account_id,
                            'sourceIp': source_ip,
                            'userAgent': headers['User-Agent'],
                        }
                    }
                    try:
                        path_params = extract_path_params(path=relative_path, extracted_path=extracted_path)
                    except Exception:
                        path_params = {}
                    result = lambda_api.process_apigateway_invocation(func_arn, relative_path, data_str,
                        headers, path_params=path_params, query_string_params=query_string_params,
                        method=method, resource_path=path, request_context=request_context)
                    if isinstance(result, FlaskResponse):
                        return flask_to_requests_response(result)
                    if isinstance(result, Response):
                        return result
                    response = Response()
                    parsed_result = result if isinstance(result, dict) else json.loads(result)
                    parsed_result = common.json_safe(parsed_result)