### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

I'm configuring the S3 bucket to have a lifecycle, everything works fine, but when I get the object, the header `Expiration` is not showing

### Expected Behavior

According to the documentation, if the bucket have a `lifecycle configuration` enabled, the header `expiration` should appear in the response

Executing the command
```bash
$ awslocal s3api get-object help
```

We get the documentation of `get-object` command and in the `OUTPUT` section we have:
>Expiration -> (string)
>          If the object expiration is configured (see PUT  Bucket  lifecycle),
>          the  response  includes this header. It includes the expiry-date and
>          rule-id key-value pairs providing object expiration information. The
>          value of the rule-id is URL-encoded.

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

#### Created the bucket-lifecycle.json
```json
{
  "Rules": [
    {
      "ID": "My Rule ID",
      "Status": "Enabled",
      "Expiration": {
        "Days": 1
      },
      "NoncurrentVersionExpiration": {
        "NoncurrentDays": 1
      }
    }
  ]
}
```

####  Command for create the lifecycle configuration on a existing bucket
```bash
$ awslocal s3api put-bucket-lifecycle-configuration --bucket my-bucket --lifecycle-configuration file://bucket-lifecycle.json
```

#### Validate the configuration
```bash
$ awslocal s3api get-bucket-lifecycle-configuration --bucket my-bucket

output:
{
    "Rules": [
        {
            "Expiration": {
                "Days": 1
            },
            "ID": "My Rule ID",
            "Status": "Enabled",
            "NoncurrentVersionExpiration": {
                "NoncurrentDays": 1
            }
        }
    ]
}
```

#### Uploaded an object:
```bash
$ awslocal s3api put-object --bucket my-bucket --key teste.json --body bucket-lifecycle.json  --content-type application/json

output:
{
    "ETag": "\"eb702ecb4e41b09ca62934217d5f13af\""
}
```

#### Fetch the object
```bash
$ awslocal s3api get-object --bucket my-bucket --key teste.json bucket-lifecycle.json 

output:
{
    "AcceptRanges": "bytes",
    "LastModified": "2022-08-11T13:39:11+00:00",
    "ContentLength": 287,
    "ETag": "\"eb702ecb4e41b09ca62934217d5f13af\"",
    "VersionId": "null",
    "ContentLanguage": "en-US",
    "ContentType": "application/json",
    "Metadata": {}
}
```

### Environment

```markdown
- OS: MacOS Monterey
- LocalStack: 1.0.3
```


### Anything else?

_No response_
"""
        Requests going to moto will never be subdomain based, as they passed through the VirtualHost forwarder.
        We know the bucket is in the path, we can directly return it.
        """
        path = urlparse(url).path
        return path.split("/")[1]
    @patch(moto_s3_responses.S3ResponseInstance.subdomain_based_buckets, pass_target=False)
    def subdomain_based_buckets(self, request):
        """
        Requests going to moto will never be subdomain based, as they passed through the VirtualHost forwarder
        """
        return False
    @patch(moto_s3_models.FakeBucket.get_permission)
    def bucket_get_permission(fn, self, *args, **kwargs):
        """
        Apply a patch to disable/enable enforcement of S3 bucket policies
        """
        if not s3_constants.ENABLE_MOTO_BUCKET_POLICY_ENFORCEMENT:
            return PermissionResult.PERMITTED
        return fn(self, *args, **kwargs)
def register_custom_handlers():
    serve_custom_service_request_handlers.append(s3_cors_request_handler)
    serve_custom_service_request_handlers.append(s3_presigned_url_request_handler)
    modify_service_response.append(S3Provider.service, s3_presigned_url_response_handler)