32.5. 使用方法
32.5.1. S3 producer 评估的消息标头
标头 | 类型 | 描述 |
---|---|---|
|
| 此对象的 bucket 名称将存储或用于当前操作 |
|
| Camel 2.18 :用于当前操作的存储桶目标名称 |
|
| 此对象的内容长度。 |
|
| 此对象的内容类型。 |
|
| Camel 2.8.2: 此对象的内容控制。 |
|
| Camel 2.8.2: 此对象的内容分布。 |
|
| Camel 2.8.2: 此对象的内容编码。 |
|
| Camel 2.8.2: 此对象的 md5 校验和。 |
|
| Camel 2.18: 用于当前操作的目标键 |
|
| 此对象将存储或用于当前操作的密钥 |
|
| Camel 2.8.2: 此对象的最后修改的时间戳。 |
|
| Camel 2.18 :要执行的操作。允许的值有 copyObject, deleteObject, listBuckets, deleteBucket, downloadLink, listObjects |
|
| Camel 2.8.4 : 此对象的存储类。 |
|
|
Camel 2.11.0 :将应用到对象的 canned acl。有关允许的值,请参阅 |
|
|
Camel 2.11.0: 一个精心构建的 Amazon S3 Access Control List 对象。如需更多详情,请参阅 |
|
| Camel 2.15.0: 支持获取或设置自定义对象Metadata 标头。 |
| 字符串 | Camel 2.16 : 在使用 AWS 管理的密钥加密对象时设置服务器端加密算法。例如,使用 AES256。 |
|
| 要存储或从当前操作返回的对象的版本 Id |
32.5.2. S3 producer 设置的消息标头
标头 | 类型 | 描述 |
---|---|---|
|
| 新上传对象的 ETag 值。 |
|
| 新上传对象的可选版本 ID。 |
|
| URL 下载链接的过期(millis)。该链接将存储在 CamelAwsS3DownloadLink 响应标头中。 |
32.5.3. S3 使用者设置的消息标头
标头 | 类型 | 描述 |
---|---|---|
|
| 存储此对象的密钥。 |
|
| 包含此对象的存储桶的名称。 |
|
| 根据 RFC 1864,对相关对象的十六进制编码的 128 位 MD5 摘要。此数据用作完整性检查,以验证调用者收到的数据是否与 Amazon S3 发送的数据相同。 |
|
| Last-Modified 标头的值,指示 Amazon S3 最后记录对关联对象的修改的日期和时间。 |
|
| 关联的 Amazon S3 对象的版本 ID (如果可用)。只有当对象上传到启用了对象版本控制的 Amazon S3 存储桶时,才会将版本 ID 分配给对象。 |
|
| Content-Type HTTP 标头,它表示存储在关联对象中的内容类型。此标头的值是标准 MIME 类型。 |
|
| 根据 RFC 1864,使用 base64 编码的相关对象(content - 不包括标头)的 base64 编码的 128 位 MD5 摘要。此数据用作消息完整性检查,以验证 Amazon S3 收到的数据是否与调用者发送的数据相同。 |
|
| Content-Length HTTP 标头表示关联对象的大小(以字节为单位)。 |
|
| 可选的 Content-Encoding HTTP 标头指定将什么内容编码应用到对象,必须应用哪些解码机制来获取 Content-Type 字段引用的 media-type。 |
|
| 可选的 Content-Disposition HTTP 标头,它指定要保存的对象的建议文件名等。 |
|
| 可选的 Cache-Control HTTP 标头,允许用户在 HTTP 请求/恢复链中指定缓存行为。 |
| 字符串 | 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",当名为 "isRemote" 的系统环境变量被设置为 true (很多其他方法),这应充当一个简单的示例。虽然不需要完全使用静态凭证,但在 AWS 环境中使用 IAM 凭证需要刷新远程环境,并添加一个主要安全增强(IAM 凭证会在每 6 小时自动刷新一次,并在策略被更新时更新)。这是 AWS 推荐管理凭证的方法,因此应尽可能使用。