繁体   English   中英

在使用Java代码将文件保存到S3时,如何设置请求标头(x-amz-server-side-encryption:aws:kms)?

[英]How do I set a request header(x-amz-server-side-encryption : aws:kms) while saving file to S3 in Java code?

下面是使用KMS服务器端加密将文件上传到S3的代码。 但是,我收到了异常“使用AWS KMS托管密钥的服务器端加密需要HTTP标头x-amz-server-side-encryption:aws:kms”;

不知道将标头放在Java代码中的位置以保存文件。

private static void saveServerSideEncryptedFileToAWS(String clientRegion, String bucketName, String awsFilePath, File file) {
            AmazonS3 s3client = AmazonS3Client.builder()
                    .withRegion(clientRegion)
                    .withCredentials(new AWSStaticCredentialsProvider(credentials))
                    .build();

            ObjectMetadata objectMetadata = new ObjectMetadata();
            //objectMetadata.setHeader("x-amz-server-side-encryption" , "aws:kms");

            objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);

            PutObjectRequest putRequest = null;
            try {
                putRequest = new PutObjectRequest(bucketName,
                        awsFilePath,
                        new FileInputStream(file),
                        objectMetadata).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams("arn:aws:kms:<<key>>"));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }

            // Upload the object and check its encryption status.
            PutObjectResult putResult = s3client.putObject(putRequest);
            printEncryptionStatus(putResult);
        }

我得到了一些成功和试验的答案……-putRequest.putCustomRequestHeader(“ x-amz-server-side-encryption”,“ aws:kms”);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM