Storage Transfer Service は、 Google Cloudのイベント通知をリッスンし、Cloud Storage バケットで追加または更新されたデータを自動的に転送できます。イベント ドリブン転送のメリットについて詳しくは、こちらをご覧ください。
Cloud Storage からのイベント ドリブン転送では、Pub/Sub 通知を使用して、転送元バケット内のオブジェクトが変更または追加されたタイミングを確認します。オブジェクトの削除は検出されません。転送元でオブジェクトを削除しても、転送先バケット内の関連オブジェクトは削除されません。
イベント ドリブン転送では、常に Cloud Storage バケットが宛先として使用されます。
権限を構成する
イベント ドリブン転送では、すべての転送ジョブに必要な権限に加えて、Pub/Sub Subscriber
ロールが必要です。
プロジェクトの Storage Transfer Service サービス エージェントの名前を確認します。
googleServiceAccounts.get
リファレンス ページに移動します。[Try this method] というインタラクティブ パネルが開きます。
パネルの [Request parameters] にプロジェクト ID を入力します。ここで指定するプロジェクトは Storage Transfer Service の管理に使用しているプロジェクトで、これは、ソースバケットのプロジェクトとは異なる場合があります。
[実行] をクリックします。
サービス エージェントのメールアドレスが
accountEmail
の値として返されます。この値をコピーします。サービス エージェントのメールアドレスは
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
の形式です。Pub/Sub Subscriber
ロールを Storage Transfer Service サービス エージェントに付与します。Cloud コンソール
Google Cloud コンソールによるアクセス制御の手順に沿って、Storage Transfer Service サービスに
Pub/Sub Subscriber
ロールを付与します。このロールは、トピック、サブスクリプション、プロジェクト レベルで付与できます。gcloud
CLIポリシーの設定の手順で、次のバインディングを追加します。
{ "role": "roles/pubsub.subscriber", "members": [ "serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com" }
Pub/Sub を構成する
Cloud Storage で Pub/Sub の前提条件を満たしていることを確認します。
転送元の Cloud Storage バケットの Pub/Sub 通知を作成します。
Google Cloud コンソールでは Pub/Sub 通知を管理できません。代わりに gcloud CLI または使用可能なクライアント ライブラリのいずれかを使用してください。
gcloud storage buckets notifications create gs://SOURCE_BUCKET_NAME --topic=TOPIC_NAME
トピックに pull サブスクリプションを作成します。転送ジョブごとに個別のサブスクリプションを作成する必要があります。
次の例は、pull サブスクリプションを作成する Google Cloud CLI コマンドを示しています。コンソールの手順とクライアント ライブラリのコードについては、pull サブスクリプションを作成するをご覧ください。
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME --ack-deadline=300
転送ジョブを作成する
REST API または Google Cloud コンソールを使用して、イベントベースの転送ジョブを作成できます。
転送ジョブ名に、個人を特定できる情報(PII)やセキュリティ データなどの機密情報を含めないでください。 Google Cloud リソース名は、他のリソースの名前に反映され、プロジェクト外部の Google 内部システムに公開される場合があります。
Cloud コンソール
Google Cloud コンソールで [転送ジョブを作成] ページに移動します。
ソースと宛先の両方で「Cloud Storage」を選択します。
[スケジュール モード] として [イベント ドリブン] を選択し、[次のステップ] をクリックします。
この転送の転送元バケットを選択します。
[イベント ストリーム] セクションで、サブスクリプション名を入力します。
projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_ID
必要に応じてフィルタを定義し、[次のステップ] をクリックします。
この転送の転送先バケットを選択します。
必要に応じて、転送の開始時刻と終了時刻を入力します。時間を指定しない場合、転送はすぐに開始し、手動で停止するまで実行されます。
転送オプションを指定します。詳細については、転送の作成ページをご覧ください。
[作成] をクリックします。
作成されると、転送ジョブの実行が開始し、イベント リスナーが Pub/Sub サブスクリプションの通知を待機します。ジョブの詳細ページには、1 時間ごとにオペレーションが 1 つ表示されます。このページには、各ジョブで転送されたデータの詳細も表示されます。
REST
REST API を使用してイベント ドリブン転送を作成するには、次の JSON オブジェクトを transferJobs.create エンドポイントに送信します。
transfer_job { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec" { "gcsDataSource" { "bucketName": "GCS_SOURCE_NAME" }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } "eventStream" { "name": "projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_ID", "eventStreamStartTime": "2022-12-02T01:00:00+00:00", "eventStreamExpirationTime": "2023-01-31T01:00:00+00:00" } }
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 の認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
イベント ドリブン転送をモニタリングする
イベント ドリブン転送を作成すると、Storage Transfer Service は転送ジョブを作成します。開始時刻になると、転送オペレーションが実行され、イベント リスナーが Pub/Sub キューからの通知を待機します。
転送オペレーションは、ステータスが in progress
の状態で約 24 時間実行されます。24 時間後にオペレーションが終了し、新しいオペレーションが開始されます。転送ジョブの終了時間に達するか、ジョブが手動で停止されるまで、24 時間ごとに新しいオペレーションが作成されます。
オペレーションが完了する予定のときにファイル転送が進行中の場合、ファイルが完全に転送されるまで現在のオペレーションは進行中のままになります。新しいオペレーションが開始され、古いオペレーションが終了するまで 2 つのオペレーションが同時に実行されます。この期間中に検出されたイベントは、新しいオペレーションによって処理されます。
現在のオペレーションと完了したオペレーションを表示するには:
Google Cloud コンソール
Google Cloud コンソールの [Storage Transfer Service] ページに移動します。
ジョブリストで、[すべて] タブまたは [クラウド間] を選択します。
転送のジョブ ID をクリックします。[スケジュール モード] 列には、イベント ドリブン転送とバッチ転送がすべて表示されます。
[オペレーション] タブを選択します。現在のオペレーションの詳細が表示され、完了したオペレーションは [実行履歴] テーブルに一覧表示されます。完了したオペレーションをクリックすると、詳細が表示されます。
gcloud
ジョブの進行状況をリアルタイムでモニタリングするには、gcloud transfer jobs monitor
を使用します。レスポンスには、現在のオペレーション、ジョブ開始時間、転送されたデータの量、スキップされたバイト数、エラー数が表示されます。
gcloud transfer jobs monitor JOB_NAME
現在のオペレーション名を取得するには:
gcloud transfer jobs describe JOB_NAME --format="value(latestOperationName)"
現在と完了したオペレーションを一覧表示するには:
gcloud transfer operations list --job-names=JOB_NAME
オペレーションの詳細を表示するには:
gcloud transfer operations describe OPERATION_NAME