5.6. 用途
たとえば、バケット helloBucket
からファイル hello.txt
を読み取るには、次のスニペットを使用します。
from("aws2-s3://helloBucket?accessKey=yourAccessKey&secretKey=yourSecretKey&prefix=hello.txt") .to("file:/var/downloaded");
5.6.1. S3 プロデューサーによって評価されるメッセージヘッダー
ヘッダー | タイプ | 説明 |
---|---|---|
|
| このオブジェクトが保存されるバケット名、または現在の操作に使用されるバケット名 |
|
| 現在の操作に使用されるバケット宛先名 |
|
| このオブジェクトのコンテンツの長さ。 |
|
| このオブジェクトのコンテンツタイプ。 |
|
| このオブジェクトのコンテンツコントロール。 |
|
| このオブジェクトのコンテンツの配置。 |
|
| このオブジェクトのコンテンツエンコーディング。 |
|
| このオブジェクトの md5 チェックサム。 |
|
| 現在の操作に使用される宛先キー |
|
| このオブジェクトが格納されるキー、または現在の操作に使用されるキー |
|
| このオブジェクトの最終変更のタイムスタンプ。 |
|
| 実行する操作。許可されている値は、copyObject、deleteObject、listBuckets、deleteBucket、listObjects です。 |
|
| このオブジェクトのストレージクラス。 |
|
|
オブジェクトに適用される既定の ACL。許可されている値については、 |
|
|
適切に設定された Amazon S3 アクセスコントロールリストオブジェクト。詳細については、 |
| String | AWS が管理するキーを使用してオブジェクトを暗号化するときに、サーバー側の暗号化アルゴリズムを設定します。たとえば、AES256 を使用します。 |
|
| 現在の操作から格納または返されるオブジェクトのバージョン ID |
|
| S3 のオブジェクトと共に保存されるメタデータのマップ。メタデータの詳細。 |
5.6.2. S3 プロデューサーによって設定されたメッセージヘッダー
ヘッダー | タイプ | 説明 |
---|---|---|
|
| 新しくアップロードされたオブジェクトの ETag 値。 |
|
| 新しくアップロードされたオブジェクトの オプション のバージョン ID。 |
5.6.3. S3 コンシューマーによって設定されたメッセージヘッダー
ヘッダー | タイプ | 説明 |
---|---|---|
|
| このオブジェクトが格納されるキー。 |
|
| このオブジェクトが含まれるバケットの名前。 |
|
| RFC 1864 に従って、関連付けられたオブジェクトの 16 進数でエンコードされた 128 ビット MD5 ダイジェスト。このデータは、呼び出し元によって受信されたデータが Amazon S3 によって送信されたデータと同じであることを確認するための整合性チェックとして使用されます。 |
|
| Last-Modified ヘッダーの値。Amazon S3 が関連付けられたオブジェクトへの変更を最後に記録した日時を示します。 |
|
| 関連する Amazon S3 オブジェクトのバージョン ID (利用可能な場合)。バージョン ID は、オブジェクトのバージョニングが有効になっている Amazon S3 バケットにオブジェクトがアップロードされた場合にのみ、オブジェクトに割り当てられます。 |
|
| 関連付けられたオブジェクトに格納されているコンテンツのタイプを示す Content-Type HTTP ヘッダー。このヘッダーの値は、標準の MIME タイプです。 |
|
| RFC 1864 に従って、関連付けられたオブジェクト (ヘッダーを含まないコンテンツ) の base64 でエンコードされた 128 ビット MD5 ダイジェスト。このデータは、Amazon S3 が受信したデータが発信者が送信したデータと同じであることを確認するためのメッセージ整合性チェックとして使用されます。 |
|
| 関連付けられたオブジェクトのサイズをバイト単位で示す Content-Length HTTP ヘッダー。 |
|
| オブジェクトに適用されたコンテンツエンコーディングと、Content-Type フィールドによって参照されるメディアタイプを取得するために適用する必要があるデコードメカニズムを指定する、オプション の Content-Encoding HTTP ヘッダー。 |
|
| オプション の Content-Disposition HTTP ヘッダー。保存するオブジェクトの推奨ファイル名などの表示情報を指定します。 |
|
| ユーザーが HTTP 要求/応答チェーンに沿ってキャッシュ動作を指定できるようにする、オプション の Cache-Control HTTP ヘッダー。 |
| String | AWS が管理するキーを使用してオブジェクトを暗号化するときのサーバー側の暗号化アルゴリズム。 |
|
| S3 のオブジェクトとともに保存されたメタデータのマップ。メタデータの詳細。 |
5.6.4. S3 プロデューサーの操作
Camel-AWS2-S3 コンポーネントは、プロデューサー側で次の操作を提供します。
- copyObject
- deleteObject
- listBuckets
- deleteBucket
- listObjects
- getObject (これは S3Object インスタンスを返します)
- getObjectRange (これは S3Object インスタンスを返します)
- createDownloadLink
操作を明示的に指定しない場合、プロデューサーは次のことを行います。- 単一ファイルのアップロード - multiPartUpload オプションが有効な場合はマルチパートアップロード。
5.6.5. 高度な AmazonS3 設定
Camel アプリケーションがファイアウォールの背後で実行されている場合、または S3Client
インスタンス設定をより詳細に制御する必要がある場合は、独自のインスタンスを作成して、Camel aws2-s3 コンポーネント設定で参照できます。
from("aws2-s3://MyBucket?amazonS3Client=#client&delay=5000&maxMessagesPerPoll=5") .to("mock:result");
5.6.6. S3 コンポーネントで KMS を使用する
AWS インフラストラクチャーを使用して AWS KMS を使用してデータを暗号化/復号化するには、次の例のように 2.21.x で導入されたオプションを使用できます。
from("file:tmp/test?fileName=test.txt") .setHeader(S3Constants.KEY, constant("testFile")) .to("aws2-s3://mybucket?amazonS3Client=#client&useAwsKMS=true&awsKMSKeyId=3f0637ad-296a-3dfe-a796-e60654fb128c");
このようにして、KMS キー 3f0637ad-296a-3dfe-a796-e60654fb128c を使用してファイル test.txt を暗号化するよう S3 に依頼します。このファイルのダウンロードを要求すると、ダウンロードの直前に復号化が行われます。
5.6.7. 静的認証情報とデフォルトの認証情報プロバイダーの比較
useDefaultCredentialsProvider オプションを指定し、これを true に設定することにより、明示的な静的認証情報の使用を回避することが可能です。
- Java システムプロパティー - aws.accessKeyId および aws.secretKey
- 環境変数: AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY。
- AWS STS の Web ID トークン。
- 共有認証情報および設定ファイル。
- Amazon ECS コンテナー認証情報 - 環境変数 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI が設定されている場合は、Amazon ECS からロードされます。
- Amazon EC2 インスタンスプロファイルの認証情報。
これに関する詳細情報は、AWS 認証情報のドキュメント を参照してください。
5.6.8. S3 Producer 操作例
- 単一のアップロード: この操作は、本文の内容に基づいてファイルを S3 にアップロードします。
from("direct:start").process(new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(S3Constants.KEY, "camel.txt"); exchange.getIn().setBody("Camel rocks!"); } }) .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client") .to("mock:result");
この操作により、コンテンツ Camel rocks! を含むファイル camel.txt がアップロードされます。mycamelbucket バケット内
- マルチパートアップロード: この操作は、本文のコンテンツに基づいて S3 へのファイルのマルチパートアップロードを実行します。
from("direct:start").process(new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(AWS2S3Constants.KEY, "empty.txt"); exchange.getIn().setBody(new File("src/empty.txt")); } }) .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&multiPartUpload=true&autoCreateBucket=true&partSize=1048576") .to("mock:result");
この操作は、mycamelbucket バケット内のファイル src/empty.txt のコンテンツに基づいて、ファイル empty.txt のマルチパートアップロードを実行します。
- CopyObject: この操作は、あるバケットから別のバケットにオブジェクトをコピーします
from("direct:start").process(new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(S3Constants.BUCKET_DESTINATION_NAME, "camelDestinationBucket"); exchange.getIn().setHeader(S3Constants.KEY, "camelKey"); exchange.getIn().setHeader(S3Constants.DESTINATION_KEY, "camelDestinationKey"); } }) .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=copyObject") .to("mock:result");
この操作は、ヘッダー camelDestinationKey で表された名前を持つオブジェクトを、バケット mycamelbucket から camelDestinationBucket バケットにコピーします。
- DeleteObject: この操作は、バケットからオブジェクトを削除します
from("direct:start").process(new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(S3Constants.KEY, "camelKey"); } }) .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=deleteObject") .to("mock:result");
この操作により、オブジェクト camelKey がバケット mycamelbucket から削除されます。
- ListBuckets: この操作は、このリージョン内のこのアカウントのバケットを一覧表示します
from("direct:start") .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=listBuckets") .to("mock:result");
この操作は、このアカウントのバケットを一覧表示します
- DeleteBucket: この操作は、URI パラメーターまたはヘッダーとして指定されたバケットを削除します
from("direct:start") .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=deleteBucket") .to("mock:result");
この操作により、バケット mycamelbucket が削除されます
- ListObjects: 特定のバケット内のこのオペレーションリストオブジェクト
from("direct:start") .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=listObjects") .to("mock:result");
この操作は、mycamelbucket バケット内のオブジェクトを一覧表示します
- GetObject: この操作は、特定のバケット内の単一のオブジェクトを取得します
from("direct:start").process(new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(S3Constants.KEY, "camelKey"); } }) .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=getObject") .to("mock:result");
このオペレーションは、mycamelbucket バケットの camelKey オブジェクトに関連する S3Object インスタンスを返します。
- GetObjectRange: この操作は、特定のバケット内の単一のオブジェクト範囲を取得します
from("direct:start").process(new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(S3Constants.KEY, "camelKey"); exchange.getIn().setHeader(S3Constants.RANGE_START, "0"); exchange.getIn().setHeader(S3Constants.RANGE_END, "9"); } }) .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=getObjectRange") .to("mock:result");
このオペレーションは、0 から 9 までのバイトを含む、mycamelbucket バケット内の camelKey オブジェクトに関連する S3Object インスタンスを返します。
- CreateDownloadLink: この操作は、S3 Presigner を介してダウンロードリンクを返します。
from("direct:start").process(new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setHeader(S3Constants.KEY, "camelKey"); } }) .to("aws2-s3://mycamelbucket?accessKey=xxx&secretKey=yyy®ion=region&operation=createDownloadLink") .to("mock:result");
この操作は、バケット mycamelbucket およびリージョン region 内のファイル camel-key のダウンロードリンク URL を返します。