32.5. 使用方法


32.5.1. S3 producer 评估的消息标头

标头类型描述

CamelAwsS3BucketName

字符串

此对象的 bucket 名称将存储或用于当前操作

CamelAwsS3BucketDestinationName

字符串

Camel 2.18: 用于当前操作的存储桶目标名称

CamelAwsS3ContentLength

Long

此对象的内容长度。

CamelAwsS3ContentType

字符串

此对象的内容类型。

CamelAwsS3ContentControl

字符串

Camel 2.8.2: 此对象的内容控制。

CamelAwsS3ContentDisposition

字符串

Camel 2.8.2: 此对象的内容分布。

CamelAwsS3ContentEncoding

字符串

Camel 2.8.2: 此对象的内容编码。

CamelAwsS3ContentMD5

字符串

Camel 2.8.2: 此对象的 md5 checksum。

CamelAwsS3DestinationKey

字符串

Camel 2.18: 用于当前操作的 Destination 键

CamelAwsS3Key

字符串

此对象将存储或用于当前操作的密钥

CamelAwsS3LastModified

java.util.Date

Camel 2.8.2: 此对象的最后修改的时间戳。

CamelAwsS3Operation

字符串

Camel 2.18 :要执行的操作。允许的值有 copyObject, deleteObject, listBuckets, deleteBucket, downloadLink, listObjects

CamelAwsS3StorageClass

字符串

Camel 2.8.4 : 此对象的存储类。

CamelAwsS3CannedAcl

字符串

Camel 2.11.0: 应用于对象的 canned acl。有关允许的值,请参阅 com.amazonaws.services.s3.model.CannedAccessControlList

CamelAwsS3Acl

com.amazonaws.services.s3.model.AccessControlList

Camel 2.11.0: 一个精心构建的 Amazon S3 Access Control List 对象。请参阅 com.amazonaws.services.s3.model.AccessControlList 以了解更多详细信息

CamelAwsS3Headers

Map<String,String>

Camel 2.15.0: 支持获取或设置自定义 objectMetadata 标头。

CamelAwsS3ServerSideEncryption

字符串

Camel 2.16 : 在使用 AWS 管理的密钥加密对象时设置服务器端加密算法。例如,使用 AES256。

CamelAwsS3VersionId

字符串

要存储或从当前操作返回的对象的版本 Id

32.5.2. S3 producer 设置的消息标头

标头类型描述

CamelAwsS3ETag

字符串

新上传对象的 ETag 值。

CamelAwsS3VersionId

字符串

新上传对象的可选版本 ID。

CamelAwsS3DownloadLinkExpiration

字符串

URL 下载链接的过期(millis)。链接将存储在 CamelAwsS3DownloadLink 响应标头中。

32.5.3. S3 使用者设置的消息标头

标头类型描述

CamelAwsS3Key

字符串

存储此对象的密钥。

CamelAwsS3BucketName

字符串

包含此对象的存储桶的名称。

CamelAwsS3ETag

字符串

根据 RFC 1864,对相关对象的十六进制编码的 128 位 MD5 摘要。此数据用作完整性检查,以验证调用者收到的数据是否与 Amazon S3 发送的数据相同。

CamelAwsS3LastModified

Date

Last-Modified 标头的值,指示 Amazon S3 最后记录对关联对象的修改的日期和时间。

CamelAwsS3VersionId

字符串

关联的 Amazon S3 对象的版本 ID (如果可用)。只有当对象上传到启用了对象版本控制的 Amazon S3 存储桶时,才会将版本 ID 分配给对象。

CamelAwsS3ContentType

字符串

Content-Type HTTP 标头,它表示存储在关联对象中的内容类型。此标头的值是标准 MIME 类型。

CamelAwsS3ContentMD5

字符串

根据 RFC 1864,使用 base64 编码的相关对象(content - 不包括标头)的 base64 编码的 128 位 MD5 摘要。此数据用作消息完整性检查,以验证 Amazon S3 收到的数据是否与调用者发送的数据相同。

CamelAwsS3ContentLength

Long

Content-Length HTTP 标头表示关联对象的大小(以字节为单位)。

CamelAwsS3ContentEncoding

字符串

可选的 Content-Encoding HTTP 标头指定将什么内容编码应用到对象,必须应用哪些解码机制来获取 Content-Type 字段引用的 media-type。

CamelAwsS3ContentDisposition

字符串

可选的 Content-Disposition HTTP 标头,它指定要保存的对象的建议文件名等。

CamelAwsS3ContentControl

字符串

可选的 Cache-Control HTTP 标头,允许用户在 HTTP 请求/恢复链中指定缓存行为。

CamelAwsS3ServerSideEncryption

字符串

Camel 2.16: 使用 AWS 管理的密钥加密对象时的服务器端加密算法。

32.5.4. S3 Producer 操作

Camel-AWS s3 组件在生成者端提供以下操作:

  • copyObject
  • deleteObject
  • listBuckets
  • deleteBucket
  • downloadLink
  • listObjects

32.5.5. 高级 AmazonS3 配置

如果您的 Camel 应用程序在防火墙后面运行,或者您需要对 AmazonS3 实例配置拥有更多控制,您可以创建自己的实例:

AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");

ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);

AmazonS3 client = new AmazonS3Client(awsCredentials, clientConfiguration);

registry.bind("client", client);

并在 Camel aws-s3 组件配置中引用它:

from("aws-s3://MyBucket?amazonS3Client=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");

32.5.6. 将 KMS 与 S3 组件一起使用

要使用 AWS KMS 加密/解密数据,您可以使用 2.21.x 中引入的选项,如下例所示

from("file:tmp/test?fileName=test.txt")
     .setHeader(S3Constants.KEY, constant("testFile"))
     .to("aws-s3://mybucket?amazonS3Client=#client&useAwsKMS=true&awsKMSKeyId=3f0637ad-296a-3dfe-a796-e60654fb128c");

这样,您将要求 S3 使用 KMS 密钥 3f0637ad-296a-3dfe-a796-e60654fb128c 来加密文件 test.txt。当您要求下载该文件时,将在下载前直接进行解密。

32.5.7. 使用带有 s3 组件的 "useIAMCredentials"

要使用 AWS IAM 凭证,您必须首先验证启动 Camel 应用程序的 EC2 是否关联有与它关联的 IAM 角色,其中包含用于有效运行的适当策略。请记住,这个功能应只在远程实例上设置为 "true"。为了进一步说明,您仍然必须在本地使用静态凭证,因为 IAM 是一个 AWS 特定组件,但 AWS 环境现在应该更易于管理。在实现并理解后,您可以将 AWS 环境的查询参数 "useIAMCredentials" 设置为 "true"!要根据本地和远程环境有效切换它,您可以考虑使用系统环境变量启用此查询参数。例如,当名为 "isRemote" 的系统环境变量被设置为 true 时,您的代码可以将 "useIAMCredentials" 查询参数设置为 "true" (这是执行此操作的许多其他方法,这应该作为简单示例)。虽然它不完全不需要静态凭证,但在 AWS 环境中使用 IAM 凭证可以无需刷新远程环境,并添加主要的安全提升(IAM 凭证会每 6 小时刷新一次,并在更新策略时更新)。这是 AWS 推荐的管理凭证的方法,因此应尽可能使用。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.