Cloud Storage トリガー

Cloud Run functions では、Cloud Storage の変更内容に応じて、Cloud Storage トリガーによって関数を呼び出すことができます。関数に Cloud Storage トリガーを指定するときに、イベントタイプを選択して Cloud Storage バケットを指定します。この関数は、指定されたバケット内のオブジェクト(ファイル)が変更されるたびに呼び出されます。

次の Cloud Storage イベントタイプがサポートされています。

イベント イベントタイプ 説明
オブジェクトのファイナライズ
  • google.cloud.storage.object.v1.finalized(Eventarc 経由)
新しいオブジェクトが作成されるか、既存のオブジェクトが上書きされ、そのオブジェクトの新しい世代が作成されると送信されます。
オブジェクトの削除
  • google.cloud.storage.object.v1.deleted(Eventarc 経由)
オブジェクトが完全に削除された場合に発生します。
オブジェクトのアーカイブ
  • google.cloud.storage.object.v1.archived(Eventarc 経由)
オブジェクトのライブ バージョンが非現行バージョンになると送信されます。詳細については、オブジェクトのバージョニングをご覧ください。
オブジェクト メタデータの更新
  • google.cloud.storage.object.v1.metadataUpdated(Eventarc 経由)
既存オブジェクトのメタデータが変更された場合に送信されます。

Cloud Storage トリガーは CloudEvent 関数として実装されます。その際に、Cloud Storage イベントデータは CloudEvents 形式で関数に渡され、CloudEvent データ ペイロードは StorageObjectData タイプになります。

Google イベント リポジトリには、イベントデータを処理するための追加のリソースが含まれています。

権限

Cloud Run functions で Cloud Storage トリガーを使用するには、プロジェクトで Cloud Storage サービス エージェントPub/Sub パブリッシャーroles/pubsub.publisher)の IAM ロールが必要です。

デプロイ

関数のデプロイ時に Cloud Storage トリガーを指定できます。関数をデプロイする一般的な手順については、Cloud Run functions のデプロイをご覧ください。デプロイ中に Cloud Storage トリガーを構成するための追加情報については、以下をご覧ください。

gcloud

gcloud CLI を使用してデプロイする場合は、次のフラグを指定して Cloud Storage の「オブジェクトのファイナライズ」イベントタイプを使用します。

gcloud functions deploy YOUR_FUNCTION_NAME \
--trigger-bucket=YOUR_STORAGE_BUCKET \
[--retry] \
...
  • --trigger-bucket フラグには、トリガーがモニタリングする Cloud Storage バケットを指定します。このバケット内で「オブジェクトのファイナライズ」イベントが発生すると、関数呼び出しがトリガーされます。
  • --retry フラグは、失敗した関数呼び出しを自動的に再試行するかどうかを制御します。詳細については、イベント ドリブン関数の再試行をご覧ください。

「オブジェクトのファイナライズ」以外のイベントタイプを使用するには、次のフラグを使用します。

  gcloud functions deploy YOUR_FUNCTION_NAME 
--gen2
--trigger-event-filters="type=EVENT_TYPE"
--trigger-event-filters="bucket=YOUR_STORAGE_BUCKET"
...

関数をデプロイする場合は、先頭に gs:// を付けずにバケット名のみを指定します(例: --trigger-event-filters="bucket=my-bucket")。

コンソール

Google Cloud コンソールを使用してデプロイする場合は、[トリガー] セクションで Cloud Storage トリガーを構成できます。

  1. [トリガーのタイプ] フィールドで、[Cloud Storage] を選択します。
  2. [イベントタイプ] フィールドで、トリガーとなるイベントを選択します。デフォルトは google.cloud.storage.object.v1.finalized です。

    Cloud Audit Logs を使用する Cloud Storage イベントについては、Eventarc トリガーのトリガー構成手順をご覧ください。

  3. [バケット] フィールドで [参照] をクリックして、トリガーをモニタリングする Cloud Storage バケットを選択します。このバケット内のオブジェクトが変更されると、関数の呼び出しがトリガーされます。

  4. [失敗時に再試行する] チェックボックスをオンまたはオフにして、失敗した関数呼び出しを Cloud Run functions が自動的に再試行するかどうかを制御します。詳細については、イベント ドリブン関数の再試行をご覧ください。

  5. [その他のオプション] をクリックして、トリガーで追加の構成を行います。

    • [トリガーのタイプ] フィールドで、[Google ソース]、[カスタム]、[サードパーティ] のいずれかを指定します。

      • [Google ソース] を使用すると、Pub/Sub、Cloud Storage、Firestore、その他の Google イベント プロバイダのトリガーを指定できます。[Eventarc トリガー] ペインで、[イベント プロバイダ] フィールドを使用して、関数をトリガーするイベントのタイプを指定するプロダクトを選択します。次に、[イベント] フィールドで、トリガーとして使用するイベントを選択します。

      • [カスタム] オプションを使用すると、アプリケーション コードからイベントを生成して消費できます。[Eventarc トリガー] ペインのプロンプトに沿ってチャネルを作成します。チャネルは、カスタム イベントをプロデューサーからコンシューマに配信するパイプラインとして使用されるリソースです。カスタム イベントはチャネルに公開され、Eventarc トリガーがこれらのイベントに登録されます。

      • [サードパーティ] オプションを使用すると、Google 以外の Eventarc ソースを提供するプロバイダと統合できます。詳細については、Eventarc のサードパーティ イベントをご覧ください。

    • [イベント] フィールドで、トリガーとなるイベントを選択します。デフォルトは google.cloud.storage.object.v1.finalized です。

    • 必要に応じて、[サービス アカウント] フィールドで、Eventarc トリガーの ID として使用するサービス アカウントを選択します。詳細については、トリガー ID をご覧ください。

  6. [トリガーを保存] をクリックします。

イベント配信

Cloud Storage トリガーは、Cloud Storage の Pub/Sub 通知を使用して実装されます。イベントには Pub/Sub 通知の配信の保証が適用されます。

Cloud Storage バケットには、特定のイベントをトリガーするように設定された通知構成を最大 10 個まで設定できます。バケットの通知の上限を超えると、関数のデプロイが失敗し、次のようなエラーが返されます。

Cloud Storage bucket ...: Pub/Sub notification limit reached

詳細については、Cloud Storage の割り当てと上限をご覧ください。

次のステップ