Cloud Storage トリガー(第 1 世代)
Cloud Run functions では、Cloud Storage の変更内容に応じて、Cloud Storage トリガーによって関数を呼び出すことができます。関数に Cloud Storage トリガーを指定するときに、イベントタイプを選択して Cloud Storage バケットを指定します。この関数は、指定されたバケット内のオブジェクト(ファイル)が変更されるたびに呼び出されます。
次の Cloud Storage イベントタイプがサポートされています。
| イベント | イベントタイプ | 説明 | 
|---|---|---|
| オブジェクトのファイナライズ | 
      
  | 
    新しいオブジェクトが作成されるか、既存のオブジェクトが上書きされ、そのオブジェクトの新しい世代が作成されると送信されます。 | 
| オブジェクトの削除 | 
      
  | 
    オブジェクトが削除(復元可能)された場合に発生します。詳細については、削除(復元可能)をご覧ください。 | 
| オブジェクトのアーカイブ | 
      
  | 
    オブジェクトのライブ バージョンが非現行バージョンになった場合に発生します。詳細については、オブジェクトのバージョニングをご覧ください。 | 
| オブジェクト メタデータの更新 | 
      
  | 
    既存オブジェクトのメタデータが変更された場合に送信されます。 | 
Cloud Storage トリガーを使用するには、イベント ドリブン関数として実装する必要がありま
また、CloudEvent 関数を使用する場合、Cloud Storage イベントデータは、CloudEvents の形式の関数に引き渡され、CloudEvent データ ペイロードは
StorageObjectDataタイプに引き渡されます。バックグラウンド関数を使用すると、Cloud Storage イベントデータ ペイロードが
StorageObjectData形式の関数に直接渡されます。
Google イベント リポジトリには、イベントデータを処理するための追加のリソースが含まれています。
デプロイ
関数のデプロイ時に Cloud Storage トリガーを指定できます。関数をデプロイする一般的な手順については、Cloud Run functions のデプロイをご覧ください。デプロイ中に Cloud Storage トリガーを構成するための追加情報については、以下をご覧ください。
gcloud
gcloud CLI を使用してデプロイする場合は、次のフラグを指定して Cloud Storage の「オブジェクトのファイナライズ」イベントタイプを使用します。
gcloud functions deploy YOUR_FUNCTION_NAME \ --no-gen2 \ --trigger-bucket=YOUR_STORAGE_BUCKET \ [--retry] \ ...
--trigger-bucketフラグには、トリガーがモニタリングする Cloud Storage バケットを指定します。このバケット内で「オブジェクトのファイナライズ」イベントが発生すると、関数呼び出しがトリガーされます。--retryフラグは、失敗した関数呼び出しを自動的に再試行するかどうかを制御します。詳細については、イベント ドリブン関数の再試行をご覧ください。
「オブジェクトのファイナライズ」以外のイベントタイプを使用するには、次のフラグを使用します。
gcloud functions deploy YOUR_FUNCTION_NAME
--no-gen2
--trigger-event=EVENT_TYPE
--trigger-resource=YOUR_STORAGE_BUCKET
...
以前の Cloud Storage イベント
Cloud Run functions(第 1 世代)のレガシー関数は、Cloud Storage トリガーに以前のオブジェクト変更通知を使用します。
gcloud functions deploy YOUR_FUNCTION_NAME \ --no-gen2 \ --trigger-event=providers/cloud.storage/eventTypes/object.change \ --trigger-resource=YOUR_STORAGE_BUCKET \ ...
このイベントタイプは、これらのイベントをすでに使用しているレガシー関数でサポートされています。ただし、今後削除される可能性があるため、このイベントタイプの使用はおすすめしません。
コンソール
Google Cloud コンソールを使用してデプロイする場合は、[トリガー] セクションで Cloud Storage トリガーを構成できます。
- [トリガーのタイプ] フィールドで、[Cloud Storage] を選択します。
 - [イベントタイプ] フィールドで、イベントタイプを選択します。
 - [バケット] フィールドで [参照] をクリックして、トリガーをモニタリングする Cloud Storage バケットを選択します。このバケット内のオブジェクトが変更されると、関数の呼び出しがトリガーされます。
 - [失敗時に再試行する] チェックボックスをオンまたはオフにして、失敗した関数の呼び出しを自動的に再試行するかどうかを制御します。詳細については、イベント ドリブン関数の再試行をご覧ください。
 
イベント配信
Cloud Storage トリガーは、Cloud Storage の Pub/Sub 通知を使用して実装されます。イベントには Pub/Sub 通知の配信の保証が適用されます。
Cloud Storage バケットには、特定のイベントをトリガーするように設定された通知構成を最大 10 個まで設定できます。バケットの通知の上限を超えると、関数のデプロイが失敗し、次のようなエラーが返されます。
Cloud Storage bucket ...: Pub/Sub notification limit reached
この制限を回避するには、独自の Pub/Sub トピックを管理し、関数が応答する Cloud Storage 通知のタイプを登録します。たとえば、選択したイベント(オブジェクトの作成など)の単一の通知を Pub/Sub トピックに構成できます。次に、トピックでイベントを処理し、複数の宛先にファンアウトするために、必要な数の関数サブスクライバーを用意します。例:
- 独自の Pub/Sub トピックを作成する。
 - Cloud Storage バケットに、特定のイベント(オブジェクト作成の 
OBJECT_FINALIZEなど)でトリガーされ、単一の Pub/Sub トピックにイベントを送信する単一の通知構成を作成する。 - Pub/Sub トピックによってトリガーされる関数を作成する。
 
Cloud Storage の制限事項の詳細については、Cloud Storage の割り当てと上限をご覧ください。
次のステップ
- イベント ドリブン関数の作成方法を学習する。
 - Cloud Run functions の関数をデプロイする方法を学習する。
 - Cloud Storage 関数のチュートリアルで、Cloud Storage トリガーを使用した関数の作成、デプロイ、呼び出しの例を確認する。