我使用Apache Camel和aws 2-s3模块来访问S3 bucket,使用endpoint-dsl来编写路由。
我可以连接到桶并从桶中读取,但在尝试上传时访问被拒绝。
我需要启用SSE-S3。我看到其他帖子说需要设置x-amz-server-side-encryption头,但是我该怎么做呢?
在aws-s3组件的文档中,它指出:CamelAwsS3ServerSideEncryption
设置使用AWS管理的密钥加密对象时的服务器端加密算法。例如,使用AES 256。
我在文档中找不到对AWS管理的密钥的任何其他引用,除非它引用了KMS或客户密钥。
我已经尝试了.setHeader(AWS2S3Constants.SERVER_SIDE_ENCRYPTION, constant("AES256"))
,它似乎并没有真正启用SSE-S3。
我还尝试过用其他方法设置标题:
Map<String,Object> headers = new HashMap<>();
headers.put("x-amz-server-side-encryption", "AES256");
...
.process(exchange -> {
exchange.getIn().setHeader("x-amz-server-side-encryption", "AES256");
})
.setHeader(AWS2S3Constants.SERVER_SIDE_ENCRYPTION, constant("AES256"))
.setHeader(AWS2S3Constants.METADATA, () -> headers)
.setHeader("CamelAwsS3Headers", () -> headers)
1条答案
按热度按时间7eumitmz1#
这应该通过以下方式解决:https://issues.apache.org/jira/browse/CAMEL-18064
在即将发布的3.17.0版本中可用。我今天早上修复了它。