Cloud Storage 向けイベント ドリブン転送のリリースを発表
Google Cloud Japan Team
Storage Transfer Service でサーバーレスのリアルタイム複製機能を利用できるようになりました。
※この投稿は米国時間 2023 年 1 月 7 日に、Google Cloud blog に投稿されたものの抄訳です。
これまでお客様からは、Storage Transfer Service(STS)が持つ特長(スケジューリング、再試行、チェックサムの生成、詳細ログなど)をすべて生かしながら、データをリアルタイムで移動する必要があるとの声をいただいていました。
その理由は、Cloud Storage バケットの間でデータの複製をスムーズに行うためです。お客様が必要としているサービスは、データ処理や分析のために単一バケットにデータを集約する、プロジェクト / リージョン / 大陸間にまたがるバケットを同期する、パートナーやベンダーとデータを共有する、開発 / 本番環境のコピーを同期して維持する、より安価なストレージ クラスでのセカンダリ コピーを保持するなどが可能な、非同期のスケーラブルなサービスです。
この機能のもう一つのユースケースは、クロスクラウド分析です。Google Cloud の分析機能と機械学習機能を活用するには、自動化されたプロセスでリアルタイムに AWS S3 から Cloud Storage にデータを複製する必要があります。
イベント ドリブン転送の概要
STS でイベント ドリブン転送のプレビュー サポート提供が始まりました。これは AWS S3 から Cloud Storage へ向けたコピーの移動、および Cloud Storage バケット間でのデータのコピーを行う、サーバーレスのリアルタイム複製実行機能です。イベント ドリブン転送を実行するうえで、STS は Pub/Sub と SQS を使用します。そのため、お客様はこのキューに対しイベント通知の設定と STS のアクセス許可を行う必要があります。転送ジョブで新たなフィールド Event Stream を使用することにより、イベント ストリームの名前を指定し、ストリームで発生するイベントに対するリッスンの開始と終了のタイミングを制御することができます。
転送ジョブが作成されると、STS はソースから送られてくるオブジェクト変更通知の処理を開始します。オブジェクトの変更またはアップロードが行われると、変更通知がトリガーされます。この変更通知に基づき、リアルタイムで処理が行われ、オブジェクトが転送先にコピーされます。
これは、低 RPO バックアップやイベント ドリブン分析、ライブ マイグレーションのような、データの新鮮さがビジネスに多大な価値をもたらすような場面で STS バッチ転送を使用しているお客様にとって朗報です。バッチ転送の場合、STS は処理対象が見つかると処理を開始します。転送元と転送先のリストは少なくとも 1 時間ごとに作成されます。この処理は膨大な数のオブジェクトを保持するバケットの場合、長時間を要することがあります。結果として、大きなバケットの場合、転送元で作成された新たなオブジェクトが何時間もの間、転送先に反映されないということになります。対照的にイベント ドリブン転送の場合、オブジェクトが作成、変更されてから数分以内にデータを転送先にコピーできます。
イベント ドリブン転送機能を使えば、バケット間で実行される自動化された継続的なデータ複製処理をわずか数クリックで設定可能です。イベント ドリブン転送機能には、接頭辞によるフィルタリング、再試行の処理、チェックサムの生成、Cloud Logging を使用した詳細な転送ログ、Cloud Monitoring を使用した進捗状況の追跡など、さまざまな補助機能も盛り込まれています。設定と利用が簡単なことに加えて、スケーラビリティと柔軟性に優れているため、同一プロジェクト間でも、異なるプロジェクト間でも、さらには異なる Cloud Storage リージョン間や大陸間でもデータの複製を行うことができます。
イベント ドリブン転送の構成
Cloud Storage バケット間のイベント ドリブン転送は以下の 3 つのステップで作成できます。
Cloud Storage バケットの変更に対するリッスンを行う Pub/Sub サブスクリプションを作成する
バケット間でデータのコピーを行い、この Pub/Sub サブスクリプションに対するリッスンを行う権限を STS に割り当てる
イベント ストリーム構成を使用して転送ジョブを作成する
これをより簡単に行う方法については、gcloud
コマンドライン ツールを利用してイベント ドリブン転送を行う方法に関するチュートリアルをご覧ください。
イベント通知を作成する
まず転送元の Cloud Storage バケットに対して Pub/Sub 通知を作成し、トピックに対して pull サブスクリプションを作成します。
SOURCE_BUCKET_NAME を転送元バケットの名前に、TOPIC_NAME を作成するトピックの名前に、SUBSCRIPTION_ID を作成するサブスクリプションの名前に置き換えます。
STS はこのサブスクリプションを使用して、転送元バケットのオブジェクトに加えられた変更に関するメッセージを読み取ります。
権限を割り当てる
STS は Google のマネージド サービス アカウントを使用して Cloud Storage バケット間の転送を実行します。新規プロジェクトの場合、このサービス アカウントは、API 呼び出し googleServiceAccounts.get を使用してプロビジョニングできます。以下のロール、あるいは同等の権限を割り当てるようにしてください。
転送元 Cloud Storage バケットからの読み取り:
ロール: Storage レガシー バケット読み取り(roles/storage.legacyBucketReader)および Storage オブジェクト閲覧者(roles/storage.objectViewer)
権限: storage.buckets.get、storage.objects.get
転送先 Cloud Storage バケットへの書き込み:
ロール: Storage レガシー バケット書き込み(roles/storage.legacyBucketWriter)
権限: storage.objects.create
先のステップで作成したサブスクリプションに登録する権限:
ロール: roles/pubsub.subscriber
権限: pubsub.subscriptions.consume
試験的な設定であれば、次のコマンドを使用して権限を割り当てることができます。本番環境ワークロードでは、上述の具体的な権限を使用してください。
転送ジョブを作成する
最後のステップとして、イベント ストリーム構成を使用してイベント ドリブン転送ジョブを作成します。転送ジョブでは、転送元で生成されたイベント通知に基づいて、転送元と転送先との間で行われるデータ移動の調整が行われます。
SOURCE_BUCKET_NAME を転送元バケットの名前に、DESTINATION_BUCKET_NAME を転送先バケットの名前に、SUBSCRIPTION_ID サブスクリプションの ID に置き換えます。ID の形式は projects/<project_id>/subscriptions/<subscription_name> です。
これで、Pub/Sub サブスクリプションの通知を待機して、転送元 Cloud Storage バケットの変更が通知されてから数分以内にデータの複製を行う転送ジョブが作成されます。
同様のステップで、AWS S3 から Cloud Storage バケットへのイベント ドリブン転送を作成できます。
早速試してみる
イベント ドリブン転送は、データ転送とタスク処理の自動化および時間とリソースの節約に役立つ、パワフルなソリューションです。皆様がこれを創造的で革新的な方法で存分に活用されることを願っております。
STS イベント ドリブン転送はすべての Google Cloud リージョンで利用可能です。転送が実行されるリージョンは、転送元 Cloud Storage バケットのリージョンに基づいて決まります。転送ジョブの作成が可能な場所は、ロケーションのリストでご確認ください。Storage Transfer Service のイベント ドリブン転送の使用に追加料金はかかりません。詳細は Storage Transfer Service の料金ページをご覧ください。
- Google Cloud、プロダクト マネージャー Ajitesh Abhishek
- Google Cloud、ソフトウェア エンジニア Anup Talwalkar