### 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_
return retry(_create_function, retries=3, sleep=4)
    yield _create_lambda_function
    for arn, client in lambda_arns_and_clients:
        try:
            client.delete_function(FunctionName=arn)
        except Exception:
            LOG.debug(f"Unable to delete function {arn=} in cleanup")
    for log_group_name in log_groups:
        try:
            logs_client.delete_log_group(logGroupName=log_group_name)
        except Exception:
            LOG.debug(f"Unable to delete log group {log_group_name} in cleanup")
@pytest.fixture
def check_lambda_logs(logs_client):
    def _check_logs(func_name: str, expected_lines: List[str] = None) -> List[str]:
        if not expected_lines:
            expected_lines = []
        log_events = get_lambda_logs(func_name, logs_client=logs_client)
        log_messages = [e["message"] for e in log_events]
        for line in expected_lines:
            if ".*" in line:
                found = [re.match(line, m, flags=re.DOTALL) for m in log_messages]
                if any(found):
                    continue
            assert line in log_messages
        return log_messages
    return _check_logs
@pytest.fixture
def create_policy(iam_client):