### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

Localstack (1.0.2) returns what appears to be an incorrect error response when calling `get-object` against a non-existent bucket:

```
$ awslocal --debug s3api get-object --bucket=not-exists-2341234 --key=doesnt-matter.txt doesnt-matter.txt 2>&1 | grep Error | uniq
b"<?xml version='1.0' encoding='utf-8'?>\n<ErrorResponse><Error><Code>NoSuchBucket</Code><Message>The specified bucket does not exist</Message><Type>Sender</Type></Error><RequestId>3FA3WN14HJTCNKT0TFF6LIKTAUQ0XO3AB7MUCIQAIW8KST6T0BA1</RequestId></ErrorResponse>"
```

```
$ aws --debug s3api get-object --bucket=not-exists-2341234 --key=doesnt-matter.txt doesnt-matter.txt 2>&1 | grep Error | uniq
b'<?xml version="1.0" encoding="UTF-8"?>\n<Error><Code>NoSuchBucket</Code><Message>The specified bucket does not exist</Message><BucketName>not-exists-2341234</BucketName><RequestId>99NA328HYHDQH2VN</RequestId><HostId>Kp5IOfCoHrw8Hvo8VL+f994yByXJGECQ4Fy5eNoY/7MPpMcHz2QygoG23ILrmF1TkiYoR+k2Njg=</HostId></Error>'
```
Pretty-printing the XML makes the difference in behaviour clearer:

```xml
<ErrorResponse>
    <Error>
        <Code>NoSuchBucket</Code>
        <Message>The specified bucket does not exist</Message>
        <Type>Sender</Type>
    </Error>. 
    <RequestId>3FA3WN14HJTCNKT0TFF6LIKTAUQ0XO3AB7MUCIQAIW8KST6T0BA1</RequestId>
</ErrorResponse>
```

vs

```xml
<Error>
    <Code>NoSuchBucket</Code>
    <Message>The specified bucket does not exist</Message>
    <BucketName>not-exists-2341234</BucketName>
    <RequestId>99NA328HYHDQH2VN</RequestId>. 
    <HostId>Kp5IOfCoHrw8Hvo8VL+f994yByXJGECQ4Fy5eNoY/7MPpMcHz2QygoG23ILrmF1TkiYoR+k2Njg=</HostId>
</Error>
```

I've also observed the same behaviour when calling the `get-object` API from the Rust SDK.

The problem does not appear prior to version `1.0.0`.

### Expected Behavior

The returned error should have the format described in the spec:

https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

#### How are you starting localstack (e.g., `bin/localstack` command, arguments, or `docker-compose.yml`)

    docker run -p 4566:4566 localstack/localstack:1.0.2

#### Client commands (e.g., AWS SDK code snippet, or sequence of "awslocal" commands)

    awslocal --debug s3api get-object --bucket=not-exists-2341234 --key=doesnt-matter.txt doesnt-matter.txt 2>&1 | grep Error | uniq


### Environment

```markdown
- OS: OSX
- LocalStack: 1.0.2
```


### Anything else?

The same behaviour is observed on `1.0.0`. Reverting to `0.14.5` we see:

```xml
<Error>
    <Code>NoSuchBucket</Code>
    <Message>The specified bucket does not exist</Message>
    <BucketName></BucketName>
    <RequestID>7a62c49f-347e-4fc4-9331-6e8eEXAMPLE</RequestID>
</Error>
```

which is the correct behaviour.
"""Return the lifecycle settings for the given S3 bucket"""
        return cls._bucket_attribute(bucket_name, "_lifecycle", {})
    @classmethod
    def replication_config(cls, bucket_name: str) -> Dict:
        """Return the lifecycle settings for the given S3 bucket"""
        return cls._bucket_attribute(bucket_name, "_replication", {})
    @classmethod
    def _bucket_attribute(cls, bucket_name: str, attr_name: str, default: Any) -> Any:
        """
        Return a custom attribute for the given bucket.
        If the attribute is not yet defined, it is initialized with the given default value.
        If the bucket does not exist in the backend, then an exception is raised.
        """
        bucket = cls.get_bucket(bucket_name)
        if not hasattr(bucket, attr_name):
            setattr(bucket, attr_name, default)
        return getattr(bucket, attr_name)
    @staticmethod
    def get_bucket(bucket_name: str) -> FakeBucket:
        bucket_name = normalize_bucket_name(bucket_name)
        bucket = s3_backend.buckets.get(bucket_name)
        if not bucket:
            
            
            if config.LEGACY_EDGE_PROXY:
                raise MissingBucket()
            raise NoSuchBucket()
        return bucket
def event_type_matches(events, action, api_method):