Google Cloud Platform

Cloud Storage のオブジェクト イベントが Cloud Pub/Sub サブスクリプションの対象に

Google Cloud Storage は、データ オブジェクトの保存場所として高いパフォーマンスと費用対効果を常に発揮してきました。そしてこのたび、オブジェクトの作成と削除、もしくはメタデータの変更をトリガーとするワークフローが構築しやすくなりました。

Cloud Storage バケットのいずれかで変更が発生するたびに、何らかのアクションを実行したいとしましょう。たとえば、販売担当者が毎日、日次の売上高データをアップロードするたびに、売上高の見通しを自動的に更新するといった具合です。また、オブジェクトが削除されたときには検索インデックスからリソースを削除する必要があると考えるでしょうし、誰かが画像に変更を加えたらサムネイルを更新したくなるかもしれません。

Cloud Storage バケットにおけるこうした変更に応じてそれぞれのアクションを実行できれば、応答性や管理性、柔軟性が向上します。

Cloud Pub/Sub のサポート

Cloud Storage では新たに、変更通知を Google Cloud Pub/Sub のトピックに送信することで、変更を Cloud Pub/Sub サブスクリプションの対象にすることが可能になりました。Cloud Pub/Sub は、高速で信頼性の高い安全なメッセージング ソリューションを構築できる強力なメッセージング プラットフォームです。

Cloud Pub/Sub のサポートにより、Cloud Storage の通知でさまざまな新機能を利用できるようになります。たとえば、ユーザーにウェブフックを構成するよう要求する代わりに pull サブスクリプションを作成したり、各メッセージのコピーを複数作成して多くのサブスクライバーに配信したり、メッセージをイベント タイプやプレフィックスでフィルタリングしたりといったことが可能です。

Cloud Storage から Cloud Pub/Sub への通知の送信については、こちらの入門ガイドを参考にしてください。Cloud Pub/Sub API を有効にし、gcloud SDK の最新版をダウンロードしたら、次のコマンドにより、Cloud Storage バケットから Cloud Pub/Sub トピックへの通知のトリガーをセットアップできます。

  $> gsutil notification create -f json -t your-topic gs://your-bucket

以後、Cloud Storage バケットの内容の変更をトリガーとして、メッセージが Cloud Pub/Sub トピックに送信されます。また、そのトピックに対する Cloud Pub/Sub サブスクリプションを作成し、プログラムでサブスクリプションからメッセージを pull できます。こちらに Python アプリでの例を示します。

Cloud Functions

Cloud Pub/Sub はバケットの内容変更に応答する強力で柔軟な方法ですが、一部のタスクでは、変更に応じたアクションを記述した小さなサーバーレス関数を手軽にデプロイするほうが望ましいかもしれません。Google Cloud Functions が Cloud Storage トリガーをサポートしているのは、それが理由です。

L2MD7cosmDPycJi8xeHEBZm_kuAwL0R7BHWa9tjrnYjx6fmFImbyrh92EgoAIrUD6B4Gf8ue748c_xJGQWd9APab7Daptc_4kT1M7wNde1xnmVQ0EwWUKuukqk6KIL6oTBHjAVPihwk7.PNG

Cloud Functions は、多様なイベントに応答するクラウド ベースのスクリプトをすばやくデプロイできる方法です。応答可能なイベントの例には、特定の URL への HTTP リクエストや、Cloud Storage バケットにおける新しいオブジェクトの作成などがあります。

ひとたび Cloud Functions を使い始めると、関数に Cloud Storage トリガーを設定する方法はすぐに覚えます。デプロイする関数に “--trigger-bucket” パラメータを追加するだけです。

  $> gcloud beta functions deploy helloWorld --stage-bucket cloud-functions --trigger-bucket your-bucket

Cloud Storage オブジェクトは、単なる静的エンティティではなく、さまざまなタスクのトリガーになりえるのです。これによってどんなことが可能になるか、それを考えるのは楽しいことだと思いませんか。皆さんにも楽しんでいただけることを願っています!

* この投稿は米国時間 4 月 10 日、Google Cloud Storage の Software Engineer である Brandon Yarbrough によって投稿されたもの(投稿はこちら)の抄訳です。

- By Brandon Yarbrough, Software Engineer, Google Cloud Storage