イベントまたは Pub/Sub メッセージを使用してワークフローをトリガーする

Eventarc トリガーを使用して、イベントまたは一連のイベントの結果としてワークフローを実行できます。イベントはイベント プロバイダから目的のイベント レシーバに転送されます。

Eventarc は、HTTP リクエストを使用して CloudEvents 形式のイベント レシーバにイベントを配信します。 Workflows サービスはイベントを(CloudEvents 仕様に従って)JSON オブジェクトに変換し、イベントをワークフロー ランタイム引数としてワークフロー実行に渡します。

ワークフローの実行がトリガーされます。

  • トリガーのフィルタ条件に一致する監査ログが作成された場合。たとえば、このクイックスタートでは、Cloud Audit Logs を使用する BigQuery のイベントを使用して Workflows をトリガーします。
  • Cloud Storage バケットや Firebase Remote Config テンプレートの更新などの直接イベントが発生した場合。たとえば、このクイックスタートでは、Cloud Storage からの直接イベントで Workflows をトリガーします。
  • Pub/Sub トピックに公開されたメッセージによる。たとえば、このクイックスタートでは Pub/Sub メッセージで Workflows をトリガーします。

次の点にご注意ください。

  • イベントはワークフローの実行が開始されると直ちに配信済みであるとみなされ、Workflows サービス内で非同期に実際の実行が行われます。

  • イベントによってトリガーされた実行は、ワークフローの実行が開始しても再試行されず、後の段階で失敗します。詳細については、イベントの再試行ポリシーをご覧ください。

  • Eventarc トリガーの宛先として Workflows を使用している場合は、Workflows の最大引数サイズを超えるイベントはワークフローの実行のトリガーに失敗します。詳細については、割り当てと上限をご覧ください。

Google Cloud CLI を使用してトリガーを作成する

トリガーを作成するには、必須フラグとオプションのフラグを指定して gcloud eventarc triggers create コマンドを実行します。 詳細については、Workflows のトリガーを作成するをご覧ください。

Console を使用してトリガーを作成する

次の手順では、Google Cloud Console の [ワークフロー] ページでトリガーを作成する方法を説明します。

始める前に

  1. Eventarc and Pub/Sub API を有効にします。

    API を有効にする

  2. Eventarc が Workflows API に対してリクエストを行えるように、サービス アカウントを作成します。

    1. Cloud Console で、[サービス アカウント] ページに移動します。
      [サービス アカウント] に移動

    2. プロジェクトを選択し、[サービス アカウントを作成] をクリックします。

    3. [サービス アカウント名] フィールドに、6~30 文字の名前を入力します。

      小文字の英数字とハイフンを使用できます。作成したサービス アカウントの名前は変更できません。

    4. [作成して続行] をクリックします。

    5. 新しいサービス アカウントがワークフローをトリガーする権限を持つように、このアカウントに workflows.invoker ロールを付与します。[ロールを選択] リストで、[ワークフロー] > [ワークフロー起動元] の順に選択します。

      本番環境アプリケーションを開発している場合は、常に、最小限のロールを付与します。詳細については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

    6. [完了] をクリックします。

  3. Eventarc のコマンドを実行するプリンシパルが Identity and Access Management(IAM)サービス アカウントとして機能できるように、プリンシパルがサービスになりすますことを許可するロールを付与します

トリガーを構成する

  1. トリガーするワークフローが存在しない場合は、作成してデプロイします。

  2. Cloud Console で、[ワークフロー] ページに移動します。
    [ワークフロー] に移動

  3. [ワークフロー] ページで、ワークフローを選択して詳細ページに移動します。

  4. [ワークフローの詳細] ページで [編集 ] を選択します。

  5. [Edit Workflow] ページで、[Add new trigger] > [Eventarc] を選択します。

    [Eventarc トリガー] ペインが開きます。

  6. トリガー名を入力します。

    これはトリガーの ID で、先頭は英字にする必要があります。63 文字以下の小文字、数字、ハイフンで構成します。

  7. イベント プロバイダを選択します。

    これは、イベントのソースである Google Cloud サービスです。たとえば、BigQuery を選択します。

  8. イベントを選択します。

    • カスタム イベント - Cloud Pub/Sub イベント プロバイダに適用されます。
    • 直接イベント - 一部のイベント プロバイダのみに適用されます。
    • Cloud Audit Logs イベント経由のイベント - すべてのイベント プロバイダに適用されます。

    カスタム

    Pub/Sub トピックにメッセージが公開されると、サービスへのリクエストがトリガーされます。これは、Cloud Pub/Sub イベント プロバイダに適用されます。

    1. [カスタム] の下に表示されるイベントから [Cloud Pub/Sub トピック] を選択します。

    2. 既存のトピックを選択するか、デフォルトの [なし] を受け入れて、トリガーに新しいトピックを作成します。

      既存の Pub/Sub トピックは、トリガーと同じプロジェクトに存在する必要があります。

      デフォルトでは、Eventarc 用に作成された Pub/Sub サブスクリプションはアクティビティに関係なく保持され、期限切れになりません。非アクティブ期間を変更するには、サブスクリプションの管理をご覧ください。

      Eventarc トリガーを削除すると、そのトリガーによって作成された Pub/Sub トピックも削除されるため、トリガーによって作成された Pub/Sub トピックは再利用しないことをおすすめします。

    3. リージョンを選択します。

      Eventarc 用の Pub/Sub トリガーは、単一リージョンのロケーションでのみ使用できます。グローバル Eventarc トリガーを作成することはできません。

    直接

    Cloud Storage

    サービスへのリクエストは、オブジェクトの作成、削除、アーカイブ、メタデータ更新などの Cloud Storage バケット内のイベントに応答してトリガーされます。これは、Cloud Storage イベント プロバイダに適用されます。

    1. [直接] に表示されるイベントから、次のいずれかを選択します。

      • google.cloud.storage.object.v1.archived: オブジェクトのライブ バージョンがアーカイブまたは削除された時点でイベントが送信されます。このイベントは、バージョニング対応バケットの場合にのみ送信されます。
      • google.cloud.storage.object.v1.delete: オブジェクトが完全に削除されたときにイベントが送信されます。バケットのオブジェクト バージョニングの設定に応じて、このイベントが持つ意味は以下のように異なります。
        • バージョニングに対応するバケットの場合、バージョンが完全に削除されたときにのみ、イベントが送信されます(オブジェクトがアーカイブされたときには送信されません)。
        • バージョニングに対応しないバケットの場合、オブジェクトが削除または上書きされると、イベントが送信されます。
      • google.cloud.storage.object.v1.finald: バケット内で新しいオブジェクトが作成された時点(または既存のオブジェクトが上書きされ、そのオブジェクトの新しい世代が作成された時点)でイベントが送信されます。
      • google.cloud.storage.object.v1.metadataUpdated: 既存のオブジェクトのメタデータが変更されたときにイベントが送信されます。
    2. Cloud Storage バケットのグローバルで一意の識別子を指定するか、参照します。

      Cloud Storage バケットは、Eventarc トリガーと同じ Google Cloud プロジェクトおよびリージョンまたはマルチリージョンに存在する必要があります。

    3. リージョンを選択します。

      Eventarc の Cloud Storage トリガーは、シングルリージョン、デュアルリージョン、マルチリージョンのロケーションで利用できます。Cloud Storage バケットは、Eventarc トリガーと同じ Google Cloud プロジェクトおよびリージョンまたはマルチリージョンに存在する必要があります。

    イベントは、Cloud Storage からの Pub/Sub 通知を使用して配信されます。同一のバケットに対して過剰な数の通知を登録すると、エラー Cloud Storage bucket ...: Pub/Sub notification limit reached で示されるように、バケットの通知上限を超えてしまう可能性があります。特定のイベントをトリガーするように設定された通知構成は、最大 10 個までバケットに設定できます。Cloud Storage の割り当てと上限のページで、割り当てと上限の詳細をご確認ください。

    Firebase アラート

    Firebase アラートが Firebase サービスによって発行されると、イベントに応答してサービスへのリクエストがトリガーされます。

    1. [直接] の下に表示されるイベントから [google.firebase.firebasealerts.alerts.v1.published] を選択します。

    2. [リージョン] リストで、[global (Global)] を選択します。

      詳細については、Eventarc のロケーションをご覧ください。

    3. [フィルタ] セクションの [alerttype] リストで、次のいずれかを選択します。

      • appDistribution.newTesterIosDevice: 特定のアプリから新しい iOS デバイスを登録するとイベントが送信されます。
      • billing.planAutomatedUpdate: Firebase プロジェクトの料金プランが自動的に更新されると、イベントが送信されます。たとえば、支払いに関する問題でプランがダウングレードされた場合などです。
      • billing.planUpdate: ユーザーが Firebase プロジェクトの料金プランを変更すると、イベントが送信されます。たとえば、プロジェクトで請求先アカウントの適用または解除が行われた場合などです。
      • crashlytics.newAnrIssue: アプリで新しいアプリケーション応答なし(ANR)エラーが発生した場合にイベントが送信されます(後続の同一のイベントでは送信されません)。
      • crashlytics.newFatalIssue: アプリで新しい致命的なクラッシュが発生したとき送信されます(後続の同じイベントに対しては送信されません)。
      • crashlytics.newNonfatalIssue: アプリで新しい非致命的なエラーが発生するとイベントが送信されます(後続の同じイベントでは送信されません)。
      • crashlytics.regression: 以前のアプリのバージョンで解決とマークされた問題でクラッシュが発生するとイベントが送信されます。
      • crashlytics.stabilityDigest: Crashlytics でトレンドになっている問題の通知があると、イベントが送信されます。
      • crashlytics.velocity: 1 つの問題が原因で多数のアプリ セッションがクラッシュしたときにイベントが送信されます。
    4. 必要に応じて、特定の Firebase アプリ ID でイベントをフィルタリングできます。[ADD FILTER] をクリックして、appid を指定します。

      完全に一致する必要があります。

    Firebase Remote Config

    Remote Config テンプレートが更新されると、イベントに応答してサービスに対するリクエストがトリガーされます。

    1. [直接] の下に表示されるイベントから [google.firebase.remoteconfig.remoteConfig.v1.updated] を選択します。

    2. [リージョン] リストで、[global (Global)] を選択します。

      詳細については、Eventarc のロケーションをご覧ください。

    Firebase Test Lab

    TestMatrix が完了すると、イベントに応答してサービスに対するリクエストがトリガーされます。

    1. [直接] の下に表示されるイベントから [google.firebase.testlab.testMatrix.v1.completed] を選択します。

    2. [リージョン] リストで、[global (Global)] を選択します。

      詳細については、Eventarc のロケーションをご覧ください。

    Cloud Audit Logs 経由

    トリガーのフィルタ条件に一致する監査ログが作成されると、サービスに対するリクエストがトリガーされます。このタイプのイベントは、すべてのイベント プロバイダに適用されます。

    1. [Cloud 監査ログ経由] の下に表示されるイベントから選択します。

    2. 次のいずれかを選択します。

      • Any resource - これがデフォルトです。作成時に生成された ID を持つ動的に生成されたリソースが含まれます。

      • 特定のリソース - 完全なリソース名を指定する必要があります。

      • パスパターン - パスパターンを使用してリソースをフィルタリングできます。たとえば、「projects/_/buckets/eventarc-bucket/objects/random.txt」または「projects/_/buckets/**/r*.txt」と入力します。

    3. リージョンを選択します。

      Eventarc の Cloud Audit Logs のトリガーは特定のリージョンとグローバル リージョンで使用できますが、デュアルリージョンとマルチリージョンのロケーションでは使用できません。グローバル トリガーによるパフォーマンスやデータ所在地の問題を回避するため、このロケーションと、イベントを生成している Google Cloud サービスのロケーションを一致させることをおすすめします。

      グローバル ロケーションを指定すると、イベント フィルタが一致するすべてのロケーションからイベントを受信します。たとえば、グローバル Eventarc トリガーを作成すると、EU と米国のマルチリージョンのリソースからイベントを受信できます。

    トリガーのフィルタ条件に一致する監査ログの作成時にトリガーされるイベントの詳細については、Cloud Audit Logs のイベント フィルタを決定するをご覧ください。

  9. ワークフローを呼び出すサービス アカウントを選択します。

    これにより、以前に workflows.invoker ロールを付与した IAM サービス アカウントが指定され、アカウントにワークフローのトリガー権限が付与されます。

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

    Eventarc トリガーが、[ワークフローの詳細] ページの [トリガー] タブに一覧表示されるようになりました。

  11. トリガーを更新または削除する場合は、ワークフローを編集する必要があります。

    1. [ワークフローの詳細] ページで [編集 ] を選択します。
    2. [トリガー] セクションで、更新または削除するトリガーを見つけます。
    3. [リソースを編集] または [リソースを削除] をクリックします。

トリガーのフィルタ条件と一致するイベントによって、ワークフローの実行がトリガーされるようになりました。

次のステップ