# Bug report

# Detailed description

The `AWS.s3.upload()` (official SDK - https://github.com/aws/aws-sdk-js) returns an object with the `Location` key that points to 4566 instead of 4572 (LocalStack S3 port).

## Expected behavior

The `Location` should point to the file on S3.

Example:

```
Location: http://localhost:4572/path/to/bucket.txt
```

## Actual behavior

The `Location` points to the LocalStack entrypoint.

Example:

```
Location: http://localhost:4566/path/to/bucket.txt
```

# Steps to reproduce

- Upload a file to S3 using the official AWS SDK (https://github.com/aws/aws-sdk-js).
- Check out the `Location` property.

## Client code

```javascript
const AWS = require('aws-sdk');
const s3 = new AWS.S3({
  region: 'us-west-1',
  endpoint: 'http://localhost:4566',
  apiVersion: '2006-03-01',
  s3ForcePathStyle: true,
});

(async () => {
  await s3
    .createBucket({ Bucket: 'my-bucket', ACL: 'private' })
    .promise();

  const { Location } = await s3
    .upload({ Key: 'file.txt', Body: 'test', Bucket: 'my-bucket' })
    .promise();

  console.assert(Location === 'http://localhost:4572/my-bucket/file.txt');
})();
```
'MessageAttributes.entry.2.Value.BinaryValue': ['value2'],
        }
        result_str = sns_listener.create_sns_message_body(self.subscriber, action)
        result = json.loads(result_str)
        del result['MessageId']
        del result['Timestamp']
        msg = {
            'Message': 'msg',
            'Subject': 'subject',
            'Signature': 'EXAMPLEpH+..',
            'SignatureVersion': '1',
            'SigningCertURL':
                'https://sns.us-east-1.amazonaws.com/SimpleNotificationService-0000000000000000000000.pem',
            'SubscribeURL': None,
            'Token': None,
            'TopicArn': 'arn',
            'Type': 'Notification',
            'MessageAttributes': {
                'attr1': {
                    'Type': 'String',
                    'Value': 'value1',
                }, 'attr2': {
                    'Type': 'String',
                    'Value': 'value2',
                }
            }
        }
        expected = json.dumps(msg)
        self.assertEqual(result, json.loads(expected))
    def test_create_sns_message_body_json_structure(self):