使用 SSE-KMS 的 S3 分段上传

S3 Multipart Upload with SSE-KMS

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

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

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

任何人都可以建议一种成功完成此过程的方法。 任何建议将不胜感激。

维卡什·帕里克

终于,我找到了解决办法。可以通过将 headers 设置为 InitiateMultipartUploadRequest object 来完成,如下所示:

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);

也可以这样做:

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