Camel 如何使用S3托管密钥启用服务器端加密?

ijxebb2r  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(156)

我使用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)
7eumitmz

7eumitmz1#

这应该通过以下方式解决:https://issues.apache.org/jira/browse/CAMEL-18064
在即将发布的3.17.0版本中可用。我今天早上修复了它。

相关问题