### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

I am storing a gzipped file in an S3 bucket. When retrieving the contents, I expect to have to decode the response. However, once I updated to `2.0.1` I am finding that the response already has the gzipped content decoded. 

The following is the response when localstack is run in `legacy` mode. Note the payload reflects the uncompressed contents and the `Content-Length` header reflects the length of the compressed content (ie. the length before it is decompressed).

```bash
$> wget -q -S -O - https://originaluploads.dev.mydomain.com/2023/4/13/79012447-af8a-4732-8595-b378d9ddb8ac/original_upload.gpx
  HTTP/1.1 200 
  Server: nginx/1.22.1
  Date: Thu, 13 Apr 2023 21:35:21 GMT
  Content-Type: application/gpx+xml
  Content-Length: 484
  Connection: keep-alive
  x-amz-version-id: 721618c3-d9d2-42bd-b433-c0530c4e3a09
  cache-control: no-cache
  content-encoding: gzip
  ETag: "1d1f83feb12d0f0185a12bb7909b3955"
  last-modified: Thu, 13 Apr 2023 21:34:31 GMT
  x-amz-server-side-encryption: AES256
  x-amz-server-side-encryption-bucket-key-enabled: false
  x-amzn-requestid: zeRF2ZIh8iI5WgtR21aoNDIMAgxatwkKndFENfFQc1dfl7tqffx4
  Access-Control-Allow-Credentials: true
  x-amz-request-id: 5BC4A0ADB1AC8913
  x-amz-id-2: MzRISOwyjmnup5BC4A0ADB1AC89137/JypPGXLh0OVFGcJaaO3KW/hRAqKOpIEEp
  accept-ranges: bytes
  content-language: en-US
gu8d͕ˎ�0��y%����\����AZm�5KX�^
...
$>
```

The following is what I get when I disable the legacy mode and use 2.0.1's new S3 provider. I have uploaded the same file (even though the file path is different in this second run). Note how that the payload is now the uncompressed file and the `Content-Length` value reflects the uncompressed file content length:
 
```bash
$> wget -q -S -O - https://originaluploads.dev.mydomain.com/2023/4/13/e01bcd66-f84b-44af-b4ba-5f6819a22ff2/original_upload.gpx
  HTTP/1.1 200 
  Server: nginx/1.22.1
  Date: Thu, 13 Apr 2023 21:29:22 GMT
  Content-Type: application/gpx+xml
  Content-Length: 1630
  Connection: keep-alive
  accept-ranges: bytes
  Last-Modified: Thu, 13 Apr 2023 21:11:33 GMT
  ETag: "de859a1f6072e5582b5877dc6fb278b2"
  x-amz-version-id: c025335d-b74a-4f01-b36a-67a378338145
  Cache-Control: no-cache
  Content-Encoding: gzip
  x-amz-server-side-encryption: AES256
  x-amz-server-side-encryption-bucket-key-enabled: false
  x-amz-request-id: 8WKX4I040PZOR9HC5S41CMBK7VQEVHSNN1OPEV8AZ7WP4JECHPEZ
  x-amz-id-2: MzRISOwyjmnup8WKX4I040PZOR9HC5S41CMBK7VQEVHSNN1OPEV8AZ7WP4JECHPEZ7/JypPGXLh0OVFGcJaaO3KW/hRAqKOpIEEp
<?xml version="1.0" encoding="UTF-8"?>
<gpx version="1.1" creator="Apple Health Export" xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
...
$>
```



### Expected Behavior

The S3 requests should be returning the compressed payload and relying on the client to do the decompression. 

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

docker-compose.yml

### Environment

```markdown
- OS: official Docker image
- LocalStack: 2.0.1
```


### Anything else?

_No response_
key_name = "test-sse-validate-kms-key-no-check"
            response = aws_client.s3.put_(
                Bucket=bucket_name,
                Key=key_name,
                Body=data,
                ServerSideEncryption="aws:kms",
                SSEKMSKeyId="fake-key-id",
            )
            assert response["ResponseMetadata"]["HTTPStatusCode"] == 200
            response = aws_client.s3.create_multipart_upload(
                Bucket=bucket_name,
                Key="multipart-test-sse-validate-kms-key-no-check",
                ServerSideEncryption="aws:kms",
                SSEKMSKeyId="fake-key-id",
            )
            assert response["ResponseMetadata"]["HTTPStatusCode"] == 200
            response = aws_client.s3.copy_(
                Bucket=bucket_name,
                Key="copy-test-sse-validate-kms-key-no-check",
                CopySource={"Bucket": bucket_name, "Key": key_name},
                ServerSideEncryption="aws:kms",
                SSEKMSKeyId="fake-key-id",
            )
            assert response["ResponseMetadata"]["HTTPStatusCode"] == 200
        key_name = "test-sse-validate-kms-key"
        fake_key_uuid = "134f2428-cec1-4b25-a1ae-9048164dba47"
        # acti
        monkeypatch.setattr(config, "S3_SKIP_KMS_KEY_VALIDATION", False)
        with 
            aws_client.s3.put_(