**Use case**
With S3, you have to send the header `x-amz-server-side-encryption-customer-key` and `x-amz-server-side-encryption-customer-key-md5` if the resource is server side encrypted.

https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeysSSEUsingRESTAPI.html
https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html

**Describe the solution you'd like**
Ability to set this in the query.
format_name,
            getName(),
            metadata_snapshot->getSampleBlock(),
            context,
            metadata_snapshot->getColumns(),
            max_block_size,
            chooseCompressionMethod(uri.key, compression_method),
            client,
            uri.bucket,
            key));
    auto pipe = Pipe::unitePipes(std::move(pipes));
    
    
    narrowPipe(pipe, num_streams);
    return pipe;
}
BlockOutputStreamPtr StorageS3::write(const ASTPtr & , const StorageMetadataPtr & metadata_snapshot, const Context & )
{
    return std::make_shared<StorageS3BlockOutputStream>(
        format_name,
        metadata_snapshot->getSampleBlock(),
        global_context,
        chooseCompressionMethod(uri.key, compression_method),
        client,
        uri.bucket,
        uri.key,
        min_upload_part_size,
        max_single_part_upload_size);
}
void registerStorageS3Impl(const String & name, StorageFactory & factory)