Storage Transfer Service は、AWS のイベント通知をリッスンし、ソースのロケーションで追加または更新されたデータを Cloud Storage バケットに自動的に転送できます。イベント ドリブン転送のメリットについて詳しくは、こちらをご覧ください。
イベント ドリブン転送は、Amazon SQS に送信された Amazon S3 イベント通知をリッスンして、ソースバケット内のオブジェクトが変更または追加されたタイミングを確認します。オブジェクトの削除は検出されません。転送元でオブジェクトを削除しても、転送先バケット内の関連オブジェクトは削除されません。
イベント ドリブン転送では、常に Cloud Storage バケットが宛先として使用されます。
始める前に
手順に沿って、宛先 Cloud Storage バケットに必要な権限を付与します。
SQS キューを作成する
AWS コンソールで [Simple Queue Service] ページに移動します。
[Create queue] をクリックします。
このキューの名前を入力します。
[Access policy] セクションで、[Advanced] を選択します。JSON オブジェクトが表示されます。
標準の AWS リージョン
{ "Version": "2008-10-17", "Id": "\_\_default\_policy\_ID", "Statement": [ { "Sid": "\_\_owner\_statement", "Effect": "Allow", "Principal": { "AWS": "01234567890" }, "Action": [ "SQS:*" ], "Resource": "arn:aws:sqs:us-west-2:01234567890:test" } ] }
AWS GovCloud リージョン
{ "Version": "2008-10-17", "Id": "\_\_default\_policy\_ID", "Statement": [ { "Sid": "\_\_owner\_statement", "Effect": "Allow", "Principal": { "AWS": "01234567890" }, "Action": [ "SQS:*" ], "Resource": "arn:aws-us-gov:sqs:us-gov-west-1:01234567890:test" } ] }
AWSとResourceの値をコピーします。これらはプロジェクトごとに一意です。前の手順で取得した
AWSとResourceの特定の値を次の JSON スニペットに貼り付けます。標準の AWS リージョン
{ "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "SQS:SendMessage", "Resource": "RESOURCE", "Condition": { "StringEquals": { "aws:SourceAccount": "AWS" }, "ArnLike": { "aws:SourceArn": "arn:aws:s3:::S3_BUCKET_NAME" } } } ] }
AWS GovCloud リージョン
{ "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "SQS:SendMessage", "Resource": "RESOURCE", "Condition": { "StringEquals": { "aws:SourceAccount": "AWS" }, "ArnLike": { "aws:SourceArn": "arn:aws-us-gov:s3:::S3_BUCKET_NAME" } } } ] }
S3_BUCKET_NAME は、S3 ソースバケットの名前に置き換えます。
この完成した JSON スニペットをコピーし、[アクセス ポリシー] セクションに表示された JSON を置き換えます。
[Create queue] をクリックします。
完了したら、キューの Amazon Resource Name(ARN)をメモします。
S3 バケットで通知を有効にする
AWS コンソールで [S3] ページに移動します。
[Buckets] リストで、ソースバケットを選択します。
[Properties] タブをクリックします。
[Event notifications] で [Create event notification] をクリックします。
このイベントの名前を指定します。
[Event types] で、[All object create events] を選択します。
[Destination] で [SQS queue] を選択し、この転送用に作成したキューを選択します。
[変更を保存] をクリックします。
権限を構成する
ソースへのアクセスを構成する: Amazon S3 の手順で、アクセスキー ID と秘密鍵を作成するか、フェデレーション ID ロールを作成します。
手順に沿って操作する際は、カスタムロールまたはカスタム信頼ポリシーを指定するよう指示されたら、次の JSON を使用します。
標準の AWS リージョン
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:DeleteMessage", "sqs:ChangeMessageVisibility", "sqs:ReceiveMessage", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::S3_BUCKET_NAME", "arn:aws:s3:::S3_BUCKET_NAME/*", "AWS_QUEUE_ARN" ] } ] }
作成したら、次の情報をメモします。
- ユーザーの場合は、アクセスキー ID と秘密鍵をメモします。
- フェデレーション ID ロールの場合は、
arn:aws:iam::AWS_ACCOUNT:role/AWS_ROLE_NAMEという形式の Amazon Resource Name(ARN)をメモします。
AWS GovCloud リージョン
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:DeleteMessage", "sqs:ChangeMessageVisibility", "sqs:ReceiveMessage", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws-us-gov:s3:::S3_BUCKET_NAME", "arn:aws-us-gov:s3:::S3_BUCKET_NAME/*", "AWS_QUEUE_ARN" ] } ] }
作成したら、次の情報をメモします。
- ユーザーの場合は、アクセスキー ID と秘密鍵をメモします。
- フェデレーション ID ロールの場合は、
arn:aws-us-gov:iam::AWS_ACCOUNT:role/AWS_ROLE_NAMEという形式の Amazon Resource Name(ARN)をメモします。
転送ジョブを作成する
REST API または Google Cloud コンソールを使用して、イベントベースの転送ジョブを作成できます。
Cloud コンソール
Google Cloud コンソールで [転送ジョブを作成] ページに移動します。
ソースタイプとして Amazon S3、宛先として Cloud Storage を選択します。
[スケジュール モード] として [イベント ドリブン] を選択し、[次のステップ] をクリックします。
S3 のバケット名を入力します。このバケット名は、AWS Management Console に表示される名前です。例:
my-aws-bucket認証方法を選択して必要な情報を入力します。必要な情報は前のセクションで作成しました。
前の手順で作成した Amazon SQS のキューの ARN を入力します。次のいずれかの形式を使用します。
- 標準の AWS リージョンの場合:
arn:aws:sqs:AWS_REGION:AWS_ACCOUNT:AWS_QUEUE_NAME - AWS GovCloud リージョンの場合:
arn:aws-us-gov:sqs:AWS_REGION:AWS_ACCOUNT:AWS_QUEUE_NAME
- 標準の AWS リージョンの場合:
必要に応じてフィルタを定義し、[次のステップ] をクリックします。
宛先の Cloud Storage バケットとパス(省略可)を選択します。
必要に応じて、転送の開始時刻と終了時刻を入力します。時間を指定しない場合、転送はすぐに開始し、手動で停止するまで実行されます。
転送オプションを指定します。詳細については、転送の作成ページをご覧ください。
[作成] をクリックします。
作成されると、転送ジョブの実行が開始し、イベント リスナーが SQS キューで通知を待機します。ジョブの詳細ページには、1 時間ごとに 1 つのオペレーションが表示されます。このページには、各ジョブで転送されたデータの詳細も表示されます。
REST
REST API を使用してイベント ドリブン転送を作成するには、次の JSON オブジェクトを transferJobs.create エンドポイントに送信します。
{ "description": "DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec": { "awsS3DataSource": { "bucketName": "S3_BUCKET_NAME", "roleArn": "AWS_ROLE_ARN" }, "gcsDataSink": { "bucketName": "GCS_BUCKET_NAME" } }, "eventStream": { "name": "AWS_QUEUE_ARN", "eventStreamStartTime": "2022-12-02T01:00:00+00:00", "eventStreamExpirationTime": "2023-01-31T01:00:00+00:00" } }
上記の JSON 内のプレースホルダの値は次のとおりです。
- DESCRIPTION は、転送ジョブの説明です。
- PROJECT_ID は、転送ジョブが作成される Google Cloud プロジェクトの ID です。
- S3_BUCKET_NAME は Amazon S3 の転送元バケットの名前です。
- AWS_ROLE_ARN は、作成したフェデレーション ID ロールの ARN です。たとえば、標準の AWS リージョンの場合は
arn:aws:iam::1234567891011:role/aws-role-name、AWS GovCloud リージョンの場合はarn:aws-us-gov:iam::1234567891011:role/aws-role-nameです。 - GCS_BUCKET_NAME は、Cloud Storage の転送先バケットの名前です。
- AWS_QUEUE_ARN は SQS キューの ARN です。たとえば、標準の AWS リージョンの場合は
arn:aws:sqs:us-east-1:1234567891011:s3-notification-queue、AWS GovCloud リージョンの場合はarn:aws-us-gov:sqs:us-gov-east-1:1234567890:event-queueです。
eventStreamStartTime と eventStreamExpirationTime は省略可能です。開始時間を省略すると、転送がすぐに開始します。終了時間を省略すると、手動で停止するまで転送が続行されます。
クライアント ライブラリ
Go
Storage Transfer Service 用のクライアント ライブラリをインストールして使用する方法については、Storage Transfer Service のクライアント ライブラリをご覧ください。 詳細については、Storage Transfer Service Go API のリファレンス ドキュメントをご覧ください。
Storage Transfer Service の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Storage Transfer Service 用のクライアント ライブラリをインストールして使用する方法については、Storage Transfer Service のクライアント ライブラリをご覧ください。 詳細については、Storage Transfer Service Java API のリファレンス ドキュメントをご覧ください。
Storage Transfer Service の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Storage Transfer Service 用のクライアント ライブラリをインストールして使用する方法については、Storage Transfer Service のクライアント ライブラリをご覧ください。 詳細については、Storage Transfer Service Node.js API のリファレンス ドキュメントをご覧ください。
Storage Transfer Service の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Storage Transfer Service 用のクライアント ライブラリをインストールして使用する方法については、Storage Transfer Service のクライアント ライブラリをご覧ください。 詳細については、Storage Transfer Service Python API のリファレンス ドキュメントをご覧ください。
Storage Transfer Service の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。