5.6. 用途


たとえば、バケット helloBucket からファイル hello.txt を読み取るには、次のスニペットを使用します。

from("aws2-s3://helloBucket?accessKey=yourAccessKey&secretKey=yourSecretKey&prefix=hello.txt")
  .to("file:/var/downloaded");

5.6.1. S3 プロデューサーによって評価されるメッセージヘッダー

ヘッダータイプ説明

CamelAwsS3BucketName

String

このオブジェクトが保存されるバケット名、または現在の操作に使用されるバケット名

CamelAwsS3BucketDestinationName

String

現在の操作に使用されるバケット宛先名

CamelAwsS3ContentLength

Long

このオブジェクトのコンテンツの長さ。

CamelAwsS3ContentType

String

このオブジェクトのコンテンツタイプ。

CamelAwsS3ContentControl

String

このオブジェクトのコンテンツコントロール。

CamelAwsS3ContentDisposition

String

このオブジェクトのコンテンツの配置。

CamelAwsS3ContentEncoding

String

このオブジェクトのコンテンツエンコーディング。

CamelAwsS3ContentMD5

String

このオブジェクトの md5 チェックサム。

CamelAwsS3DestinationKey

String

現在の操作に使用される宛先キー

CamelAwsS3Key

String

このオブジェクトが格納されるキー、または現在の操作に使用されるキー

CamelAwsS3LastModified

java.util.Date

このオブジェクトの最終変更のタイムスタンプ。

CamelAwsS3Operation

String

実行する操作。許可されている値は、copyObject、deleteObject、listBuckets、deleteBucket、listObjects です。

CamelAwsS3StorageClass

String

このオブジェクトのストレージクラス。

CamelAwsS3CannedAcl

String

オブジェクトに適用される既定の ACL。許可されている値については、software.amazon.awssdk.services.s3.model.ObjectCannedACL を参照してください。

CamelAwsS3Acl

software.amazon.awssdk.services.s3.model.BucketCannedACL

適切に設定された Amazon S3 アクセスコントロールリストオブジェクト。詳細については、software.amazon.awssdk.services.s3.model.BucketCannedACL を参照してください。

CamelAwsS3ServerSideEncryption

String

AWS が管理するキーを使用してオブジェクトを暗号化するときに、サーバー側の暗号化アルゴリズムを設定します。たとえば、AES256 を使用します。

CamelAwsS3VersionId

String

現在の操作から格納または返されるオブジェクトのバージョン ID

CamelAwsS3Metadata

Map<String, String>

S3 のオブジェクトと共に保存されるメタデータのマップ。メタデータの詳細。

5.6.2. S3 プロデューサーによって設定されたメッセージヘッダー

ヘッダータイプ説明

CamelAwsS3ETag

String

新しくアップロードされたオブジェクトの ETag 値。

CamelAwsS3VersionId

String

新しくアップロードされたオブジェクトの オプション のバージョン ID。

5.6.3. S3 コンシューマーによって設定されたメッセージヘッダー

ヘッダータイプ説明

CamelAwsS3Key

String

このオブジェクトが格納されるキー。

CamelAwsS3BucketName

String

このオブジェクトが含まれるバケットの名前。

CamelAwsS3ETag

String

RFC 1864 に従って、関連付けられたオブジェクトの 16 進数でエンコードされた 128 ビット MD5 ダイジェスト。このデータは、呼び出し元によって受信されたデータが Amazon S3 によって送信されたデータと同じであることを確認するための整合性チェックとして使用されます。

CamelAwsS3LastModified

日付

Last-Modified ヘッダーの値。Amazon S3 が関連付けられたオブジェクトへの変更を最後に記録した日時を示します。

CamelAwsS3VersionId

String

関連する Amazon S3 オブジェクトのバージョン ID (利用可能な場合)。バージョン ID は、オブジェクトのバージョニングが有効になっている Amazon S3 バケットにオブジェクトがアップロードされた場合にのみ、オブジェクトに割り当てられます。

CamelAwsS3ContentType

String

関連付けられたオブジェクトに格納されているコンテンツのタイプを示す Content-Type HTTP ヘッダー。このヘッダーの値は、標準の MIME タイプです。

CamelAwsS3ContentMD5

String

RFC 1864 に従って、関連付けられたオブジェクト (ヘッダーを含まないコンテンツ) の base64 でエンコードされた 128 ビット MD5 ダイジェスト。このデータは、Amazon S3 が受信したデータが発信者が送信したデータと同じであることを確認するためのメッセージ整合性チェックとして使用されます。

CamelAwsS3ContentLength

Long

関連付けられたオブジェクトのサイズをバイト単位で示す Content-Length HTTP ヘッダー。

CamelAwsS3ContentEncoding

String

オブジェクトに適用されたコンテンツエンコーディングと、Content-Type フィールドによって参照されるメディアタイプを取得するために適用する必要があるデコードメカニズムを指定する、オプション の Content-Encoding HTTP ヘッダー。

CamelAwsS3ContentDisposition

String

オプション の Content-Disposition HTTP ヘッダー。保存するオブジェクトの推奨ファイル名などの表示情報を指定します。

CamelAwsS3ContentControl

String

ユーザーが HTTP 要求/応答チェーンに沿ってキャッシュ動作を指定できるようにする、オプション の Cache-Control HTTP ヘッダー。

CamelAwsS3ServerSideEncryption

String

AWS が管理するキーを使用してオブジェクトを暗号化するときのサーバー側の暗号化アルゴリズム。

CamelAwsS3Metadata

Map<String, String>

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&region=region&operation=createDownloadLink")
  .to("mock:result");

この操作は、バケット mycamelbucket およびリージョン region 内のファイル camel-key のダウンロードリンク URL を返します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.