使用 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);
我正在尝试使用 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);