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 checksum。 |
|
| Camel 2.18: 用于当前操作的 Destination 键 |
|
| 此对象将存储或用于当前操作的密钥 |
|
| 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: 支持获取或设置自定义 objectMetadata 标头。 |
| 字符串 | 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" (这是执行此操作的许多其他方法,这应该作为简单示例)。虽然它不完全不需要静态凭证,但在 AWS 环境中使用 IAM 凭证可以无需刷新远程环境,并添加主要的安全提升(IAM 凭证会每 6 小时刷新一次,并在更新策略时更新)。这是 AWS 推荐的管理凭证的方法,因此应尽可能使用。