# 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');
})();
```
{'filter': [{'numeric': ['>', 0, '<=', 150]}]},
                {'filter': {'Type': 'Number', 'Value': -1}},
                False
            ),
            (
                'multiple conditions on an array',
                {'filter': ['test1', 'test2', {'prefix': 'som'}]},
                {'filter': {'Type': 'String.Array', 'Value': "['anything', 'something']"}},
                True
            )
        ]
        for test in test_data:
            test_name = test[0]
            filter_policy = test[1]
            attributes = test[2]
            expected = test[3]
            self.assertEqual(sns_listener.check_filter_policy(filter_policy, attributes), expected, test_name)
    def test_is_raw_message_delivery(self):
        valid_true_values = ['true', 'True', True]
        for true_value in valid_true_values:
            self.subscriber['RawMessageDelivery'] = true_value
            self.assertTrue(sns_listener.is_raw_message_delivery(self.subscriber))
    def test_is_not_raw_message_delivery(self):
        invalid_values = ['false', 'False', False, 'somevalue', '']
        for invalid_values in invalid_values:
            self.subscriber['RawMessageDelivery'] = invalid_values
            self.assertFalse(sns_listener.is_raw_message_delivery(self.subscriber))
        del self.subscriber['RawMessageDelivery']
        self.assertFalse(sns_listener.is_raw_message_delivery(self.subscriber))