### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

copyObject and putObject (and perhaps other requests) requests are accepted and do not return an error when an SSE KMS key is specified. 

### Expected Behavior

The error which should be returned is KMS.NotFoundException.

### How are you starting LocalStack?

Custom (please describe below)

### Steps To Reproduce

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

    Localstack testcontainers 

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

   Call copyObject/putObject via latest version using AWS SDK V2 and specific a ssekmsKeyId.

```java
final var copyObjectRequestBuilder =
        CopyObjectRequest.builder()
            .serverSideEncryption(ServerSideEncryption.AWS_KMS)
            .ssekmsKeyId("NON-EXISTENT KMS KEY")
            .sourceBucket(sourceBucketName)
            .sourceKey(sourceKey)
            .destinationBucket(destinationBucket)
            .destinationKey(destinationKey);
final var copyObjectResponse = sourceRegionS3Client.copyObject(copyObjectRequest); // Error should be thrown here but localstack does not return an error
```

### Environment

```markdown
- OS: MacOS 13.0
- LocalStack: Latest (v1.2.0)
```


### Anything else?

_No response_
self,
        context: RequestContext,
        request: PutBucketLifecycleRequest,
    ) -> None:
        
        
        self.put_bucket_lifecycle_configuration(context, request)
    @handler("PutBucketLifecycleConfiguration", expand=False)
    def put_bucket_lifecycle_configuration(
        self,
        context: RequestContext,
        request: PutBucketLifecycleConfigurationRequest,
    ) -> None:
        """This is technically supported in moto, however moto does not support multiple transitions action
        It will raise an TypeError trying to get dict attributes on a list. It would need a bigger rework on moto's side
        Moto has quite a good validation for the other Lifecycle fields, so it would be nice to be able to use it
        somehow. For now the behaviour is the same as before, aka no validation
        """
        
        bucket = request["Bucket"]
        moto_backend = get_moto_s3_backend(context)
        get_bucket_from_moto(moto_backend, bucket=bucket)
        store = self.get_store()
        
        store.bucket_lifecycle_configuration[bucket] = request.get("LifecycleConfiguration")
    def delete_bucket_lifecycle(