java - 如何设置请求 header (x-amz-服务器端加密 : aws:kms) while saving file to S3 in Java code?

标签 java amazon-s3 encryption request-headers amazon-kms

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

不确定将 header 放置在 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-服务器端加密","aws:kms");

关于java - 如何设置请求 header (x-amz-服务器端加密 : aws:kms) while saving file to S3 in Java code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57170005/

相关文章:

java LocalDateTime 来自字符串解析错误

amazon-web-services - 从单个 S3 存储桶通过 AWS CloudFront 为 SPA Multi-Tenancy 提供服务

security - 有没有办法对文档进行数字签名以证明它们在某个时间点存在

java - 了解 Spring security 中的身份验证提供程序

java - 具有多个 where 子句的选择查询

amazon-web-services - 如何允许使用 Amazon 托管的站点嵌入 iFrame 中?

java - s3 hadoop错误:NoSuchMethodError:org.apache.hadoop.metrics2.lib.MetricsRegistry.newCounter

c - 如何将这些字符沿字母表向下移动 3 个空格,而不进入字母表之外的其他字符?

c++ - 创建包含密码的安全配置文件

java - 从 api 返回多个 order_id 的值