使用SSE-KMS进行S3分段上传

时间:2017-11-16 11:45:36

标签: encryption amazon-s3 aws-kms

我正在尝试使用aws-java-sdk(1.11.230)编写实用程序。 我可以使用PutObjectRequest编写一个带SSE-KMS的文件,如下所示:

PutObjectRequest putRequest = new PutObjectRequest(existingBucketName, keyName, file)
                        .withSSEAwsKeyManagementParams(kmsKeyId);

但是在尝试以多部分上传时,我找不到任何方法来为SSE-KMS指定加密配置。

有人可以建议一种方法来成功完成这项工作。 任何建议将不胜感激。

Vikash Pareek

2 个答案:

答案 0 :(得分:0)

最后,我能够找到解决方案。可以通过将标题设置为 InitiateMultipartUploadRequest 对象来完成,如下所示:

InitiateMultipartUploadRequest initRequest = new
                InitiateMultipartUploadRequest(bucketName, keyName);
        initRequest.putCustomRequestHeader("x-amz-server-side-encryption", "aws:kms");
        initRequest.putCustomRequestHeader("x-amz-server-side-encryption-aws-kms-key-id", kmsKey);

答案 1 :(得分:0)

也可以这样:

InitiateMultipartUploadRequest initRequest = new InitiateMultipartUploadRequest("example-bucket", "textfile.txt");      SSEAwsKeyManagementParams kms = new SSEAwsKeyManagementParams("KMS-key-alias");
initRequest.setSSEAwsKeyManagementParams(kms);
initResponse = s3Client.initiateMultipartUpload(initRequest);