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 

from localstack.services.awslambda import lambda_api
from localstack.services.apigateway import helpers
from localstack.services.generic_proxy import ProxyListener
from localstack.services.apigateway.helpers import (get_resource_for_path,
    flask_to_requests_response, handle_authorizers, extract_query_string_params,
    extract_path_params, make_error, get_cors_response)
LOGGER = logging.getLogger(__name__)
PATH_REGEX_AUTHORIZERS = r'^/restapis/([A-Za-z0-9_\-]+)/authorizers(\?.*)?'
PATH_REGEX_USER_REQUEST = r'^/restapis/([A-Za-z0-9_\-]+)/([A-Za-z0-9_\-]+)/%s/(.*)$' % PATH_USER_REQUEST
class ProxyListenerApiGateway(ProxyListener):
    def forward_request(self, method, path, data, headers):
        data = data and json.loads(to_str(data))
        if re.match(PATH_REGEX_USER_REQUEST, path):
            search_match = re.search(PATH_REGEX_USER_REQUEST, path)
            api_id = search_match.group(1)
            stage = search_match.group(2)
            relative_path_w_query_params = '/%s' % search_match.group(3)
            relative_path, query_string_params = extract_query_string_params(path=relative_path_w_query_params)
            path_map = helpers.get_rest_api_paths(rest_api_id=api_id)
            try:
                extracted_path, resource = get_resource_for_path(path=relative_path, path_map=path_map)
            except Exception:
                return make_error('Unable to find path %s' % path, 404)
            integrations = resource.get('resourceMethods', {})
            integration = integrations.get(method, {})
            if not integration:
                integration = integrations.get('ANY', {})
            integration = integration.get('methodIntegration')
            if not integration:
                if method == 'OPTIONS' and 'Origin' in headers: