I'm trying to setup an lambda function triggered by S3 events within a localstack docker-compose environment.
I've got the latest localstack image running in one service with S3, Lambda and APIGATEWAY and the second service is using `awslocal` to communicate with the localstack.

I have gotten as far as successfully creating a lambda function but when I attempt to `add-permission` I get a 404 Not Found error.

My command is:
```
awslocal lambda add-permission 
--function-name my-lambda-function 
--action lambda:InvokeFunction 
--statement-id s3 
--principal s3.amazonaws.com 
--source-arn arn:aws:s3:::event-source-bucket
```

This works against AWS so I'm not sure what I need to have setup within localstack to get it working.  Thanks for any insight you may have.
if response.content:
            
            self._fix_account_id(response)
            
            self._fix_date_format(response)
            
            response.headers['content-length'] = len(response._content)
    def _fix_date_format(self, response):
        """ Normalize date to format '2019-06-13T18:10:09.1234Z' """
        pattern = r'<CreateDate>([^<]+) ([^<+]+)(\+[^<]*)?</CreateDate>'
        replacement = r'<CreateDate>\1T\2Z</CreateDate>'
        self._replace(response, pattern, replacement)
    def _fix_account_id(self, response):
        pattern = r'<([^>]*)Arn>\s*arn:aws:iam::([0-9]+):([^<]+)</\1Arn>'
        replacement = r'<\1Arn>arn:aws:iam::%s:\3</\1Arn>' % TEST_AWS_ACCOUNT_ID
        self._replace(response, pattern, replacement)
    def _reset_account_id(self, data):
        """ Fix account ID in request payload. All external-facing responses contain our
            predefined account ID (defaults to 000000000000), whereas the backend endpoint
            from moto expects a different hardcoded account ID (123456789012). """
        return aws_stack.fix_account_id_in_arns(
            data, colon_delimiter='%3A', existing=TEST_AWS_ACCOUNT_ID, replace=MOTO_ACCOUNT_ID)
    def _replace(self, response, pattern, replacement):
        content = to_str(response.content)
        response._content = re.sub(pattern, replacement, content)
UPDATE_IAM = ProxyListenerIAM()