Cloud Run のトリガーを作成する

指定したイベントまたは一連のイベントの通知を Cloud Run サービスが受信するように、Eventarc トリガーを作成できます。トリガーにフィルタを指定することで、イベントソースとターゲット Cloud Run サービスを含むイベントのルーティングを構成できます。

サービスに対するリクエストは、次のイベントタイプによってトリガーされます。

トリガーを作成するには、Google Cloud CLI または Google Cloud Console を使用します。

組織が Google Cloud 環境に制約を適用すると、このドキュメントの一部の手順が正しく機能しない場合があります。その場合、パブリック IP アドレスやサービス アカウント キーを作成するようなタスクを完了できない場合があります。制約に関するエラーを返すリクエストを行う場合は、制約がある Google Cloud 環境でアプリケーションを開発する方法をご覧ください。

トリガーを作成する準備

トリガーを作成する前に、次の前提条件を満たす必要があります。

  1. API を有効にします。

    gcloud services enable cloudbuild.googleapis.com \
        eventarc.googleapis.com \
        logging.googleapis.com \
        pubsub.googleapis.com \
        run.googleapis.com \
        workflows.googleapis.com
    
  2. ユーザー管理のサービス アカウントがない場合は、新規に作成するか、デフォルトのサービス アカウントを使用します。

    SERVICE_ACCOUNT=SA_NAME
    gcloud iam service-accounts create ${SERVICE_ACCOUNT}

    SA_NAME は、サービス アカウントの名前に置き換えます。6~30 文字で、小文字の英数字とダッシュを使用できます。作成したサービス アカウントの名前は変更できません。

    このページの例では、Compute Engine のデフォルトのサービス アカウントを使用しています。

  3. 認証された呼び出しと未認証の呼び出しに必要な Identity and Access Management(IAM)のロール、権限、フラグを付与します。詳細については、Eventarc のロールと権限をご覧ください。

  4. Cloud Storage からの直接イベントのトリガーを作成する場合は、Cloud Storage サービス アカウントに pubsub.publisher ロールを付与します。

    SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role='roles/pubsub.publisher'
    

    PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。プロジェクト ID は、Google Cloud Console の [ダッシュボード] ページで確認できます。

gcloud を使用したトリガーの作成

トリガーを作成するには、必須フラグとオプションのフラグを指定して gcloud コマンドを実行します。

Cloud Audit Logs イベント

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.cloud.audit.log.v1.written" \
    --event-filters="serviceName=SERVICE_NAME" \
    --event-filters="methodName=METHOD_NAME" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

次のように置き換えます。

  • TRIGGER: トリガーの ID または完全修飾識別子
  • LOCATION: Eventarc トリガーのロケーション。または、eventarc/location プロパティを設定します(例: gcloud config set eventarc/location us-central1)。

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

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

  • DESTINATION_RUN_SERVICE: トリガーのイベントを受け取る Cloud Run サービスの名前。サービスは、Cloud Run でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/)に送信された HTTP POST リクエストとしてイベントを受信します。
  • DESTINATION_RUN_REGION: 宛先の Cloud Run サービスがあるリージョン。指定しない場合、サービスはトリガーと同じリージョンにあると見なされます。
  • SERVICE_NAME: Google Cloud サービスの識別子
  • METHOD_NAME: オペレーションの ID
  • PROJECT_NUMBER: Google Cloud プロジェクト番号

注:

  • 以下のフラグは必須です。
    • --event-filters="type=google.cloud.audit.log.v1.written"
    • --event-filters="serviceName=VALUE"
    • --event-filters="methodName=VALUE"
  • serviceNamemethodName の値など、Eventarc でサポートされている監査ログイベントのリストについては、Eventarc でサポートされるイベントをご覧ください。
  • 各トリガーには複数のイベント フィルタを指定できます。その場合は、--event-filters=[ATTRIBUTE=VALUE,...] フラグにカンマ区切りで指定する必要があります。さらにフィルタを追加するには、このフラグを繰り返し指定します。すべてのフィルタに一致するイベントのみが宛先に送信されます。ワイルドカードと正規表現はサポートされていません。 Cloud Audit Logs のイベント フィルタを決定するをご覧ください。
  • --service-account フラグには、トリガーに関連付けられた Identity and Access Management(IAM)サービス アカウントのメールアドレスを指定します。
  • --event-filters="resourceName=VALUE" フラグを使用してリソースの完全なパスを指定することで、特定のリソースのイベントをフィルタリングすることもできます。動的に作成され、作成時に ID が生成されるリソースの場合は、このフラグを省略します。または、--event-filters-path-pattern="resourceName=VALUE" フラグを使用してリソースパス パターンを指定し、一連のリソースのイベントをフィルタリングします。
  • --destination-run-path フラグを使用して、トリガーのイベントが送信される宛先の Cloud Run サービスの相対パスを指定することもできます。

例:

  gcloud eventarc triggers create helloworld-trigger \
      --location=us-central1 \
      --destination-run-service=helloworld-events \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.audit.log.v1.written" \
      --event-filters="serviceName=storage.googleapis.com" \
      --event-filters="methodName=storage.buckets.update" \
      --event-filters="resourceName=projects/_/buckets/eventarc-bucket/objects/random.txt" \
      --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

このコマンドにより、storage.googleapis.com によって書き込まれた監査ログと、storage.buckets.update として識別されるオペレーションに helloworld-trigger というトリガーが作成されます。

直接イベント

Cloud Storage

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="bucket=BUCKET" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

次のように置き換えます。

  • TRIGGER: トリガーの ID または完全修飾識別子
  • LOCATION: Eventarc トリガーのロケーション。または、eventarc/location プロパティを設定します(例: gcloud config set eventarc/location us-central1)。

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

  • DESTINATION_RUN_SERVICE: トリガーのイベントを受け取る Cloud Run サービスの名前。サービスは、Cloud Run でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/)に送信された HTTP POST リクエストとしてイベントを受信します。
  • DESTINATION_RUN_REGION: 宛先の Cloud Run サービスがあるリージョン。指定しない場合、サービスはトリガーと同じリージョンにあると見なされます。
  • EVENT_FILTER_TYPE: Cloud Storage イベントの識別子。次のいずれかになります。
    • google.cloud.storage.object.v1.finalized: バケット内で新しいオブジェクトが作成された時点(または既存のオブジェクトが上書きされ、そのオブジェクトの新しい世代が作成された時点)でイベントが送信されます。
    • google.cloud.storage.object.v1.archived: オブジェクトのライブ バージョンがアーカイブまたは削除された時点でイベントが送信されます。このイベントは、バージョニング対応バケットの場合にのみ送信されます。
    • google.cloud.storage.object.v1.deleted: オブジェクトが完全に削除された時点でイベントが送信されます。バケットのオブジェクト バージョニングの設定に応じて、このイベントが持つ意味は以下のように異なります。
      • バージョニングに対応するバケットの場合、バージョンが完全に削除されたときにのみ、イベントが送信されます(オブジェクトがアーカイブされたときには送信されません)。
      • バージョニングに対応しないバケットの場合、オブジェクトが削除または上書きされると、イベントが送信されます。
    • google.cloud.storage.object.v1.metadataUpdated: 既存のオブジェクトのメタデータが変更された時点でイベントが送信されます。
  • BUCKET: Cloud Storage バケットのグローバルに一意の識別子
  • PROJECT_NUMBER: Google Cloud プロジェクト番号

注:

  • 以下のフラグは必須です。
    • --event-filters="type=EVENT_FILTER_TYPE"
    • --event-filters="bucket=BUCKET"
  • トリガーの作成後に EVENT_FILTER_TYPE を変更することはできません。代わりに、新しいトリガーを作成して古いトリガーを削除します。
  • イベントは、Cloud Storage からの Pub/Sub 通知を使用して配信されます。同一のバケットに対して過剰な数の通知を登録すると、エラー Cloud Storage bucket ...: Pub/Sub notification limit reached で示されるように、バケットの通知上限を超えてしまう可能性があります。バケットには、特定のイベントをトリガーするように設定された通知構成を最大 10 個まで設定できます。Cloud Storage の割り当てと上限のページで、割り当てと上限の詳細をご確認ください。
  • 各トリガーには複数のイベント フィルタを指定できます。その場合は、--event-filters=[ATTRIBUTE=VALUE,...] フラグにカンマ区切りで指定する必要があります。さらにフィルタを追加するには、このフラグを繰り返し指定します。すべてのフィルタに一致するイベントのみが宛先に送信されます。ワイルドカードと正規表現はサポートされていません。
  • --service-account フラグには、トリガーに関連付けられた Identity and Access Management(IAM)サービス アカウントのメールアドレスを指定します。
  • --destination-run-path フラグを使用して、トリガーのイベントが送信される宛先の Cloud Run サービスの相対パスを指定することもできます。
  • Cloud Storage バケットは、Eventarc トリガーと同じ Google Cloud プロジェクトおよびリージョンまたはマルチリージョンに存在する必要があります。

例:

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.cloud.storage.object.v1.finalized" \
    --event-filters="bucket=my-project-bucket" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

このコマンドは、Cloud Storage バケット my-project-bucketgoogle.cloud.storage.object.v1.finalized として識別されるイベントに対して helloworld-trigger というトリガーを作成します。

Firebase アラート

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=ALERT_TYPE" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

次のように置き換えます。

  • TRIGGER: トリガーの ID または完全修飾識別子
  • DESTINATION_RUN_SERVICE: トリガーのイベントを受け取る Cloud Run サービスの名前。サービスは、Cloud Run でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/)に送信された HTTP POST リクエストとしてイベントを受信します。
  • DESTINATION_RUN_REGION: 宛先の Cloud Run サービスがあるリージョン。指定しない場合、サービスはトリガーと同じリージョンにあると見なされます。
  • ALERT_TYPE: Firebase アラートのタイプ。次のいずれかになります。
    • appDistribution.inAppFeedback: テスターが特定のアプリのアプリ内フィードバックを送信すると、イベントが送信されます。
    • appDistribution.newTesterIosDevice: 特定のアプリに新しい iOS テスター デバイスが登録されるとイベントが送信されます。
    • billing.planAutomatedUpdate: Firebase プロジェクトの料金プランが自動的に更新されると、イベントが送信されます。たとえば、支払いに関する問題でプランがダウングレードされた場合などです。
    • billing.planUpdate: ユーザーが Firebase プロジェクトの料金プランを変更すると、イベントが送信されます。たとえば、プロジェクトで請求先アカウントの適用または解除が行われた場合などです。
    • crashlytics.newAnrIssue: アプリで新しいアプリケーション応答なし(ANR)エラーが発生した場合にイベントが送信されます(後続の同一のイベントでは送信されません)。
    • crashlytics.newFatalIssue: アプリで新しい致命的なクラッシュが発生したとき送信されます(後続の同じイベントに対しては送信されません)。
    • crashlytics.newNonfatalIssue: アプリで新しい非致命的なエラーが発生するとイベントが送信されます(後続の同じイベントでは送信されません)。
    • crashlytics.regression: 以前のアプリのバージョンで解決とマークされた問題でクラッシュが発生するとイベントが送信されます。
    • crashlytics.stabilityDigest: Crashlytics でトレンドになっている問題の通知があると、イベントが送信されます。
    • crashlytics.velocity: 1 つの問題が原因で多数のアプリ セッションがクラッシュしたときにイベントが送信されます。
  • PROJECT_NUMBER: Google Cloud プロジェクト番号

注:

  • --location フラグは global にする必要があります。詳細については、Eventarc のロケーションをご覧ください。
  • --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" フラグと --event-filters="alerttype=ALERT_TYPE" フラグは必須です。
  • 必要に応じて、--event-filters="appid=APP_ID" フラグを使用して完全一致を指定することで、特定の Firebase アプリ ID のイベントをフィルタリングできます。
  • トリガーの作成後に、イベント フィルタのタイプを変更することはできません。代わりに、新しいトリガーを作成して古いトリガーを削除します。
  • --service-account フラグには、トリガーに関連付けられた Identity and Access Management(IAM)サービス アカウントのメールアドレスを指定します。
  • --destination-run-path フラグを使用して、トリガーのイベントが送信される宛先の Cloud Run サービスの相対パスを指定することもできます。

例:

gcloud eventarc triggers create helloworld-trigger \
    --location=global \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.firebasealerts.alerts.v1.published" \
    --event-filters="alerttype=crashlytics.velocity" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

このコマンドは、google.firebase.firebasealerts.alerts.v1.published として識別されるイベントと crashlytics.velocity アラートタイプに対して helloworld-trigger というトリガーを作成します。

Firebase Realtime Database

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="instance=INSTANCE" \
    --event-filters-path-pattern="ref=REF" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

次のように置き換えます。

  • TRIGGER: トリガーの ID または完全修飾識別子
  • LOCATION: Eventarc トリガーのロケーション。または、eventarc/location プロパティを設定します(例: gcloud config set eventarc/location us-central1)。Eventarc 用の Firebase Realtime Database トリガーは、次のロケーションでのみ使用できます。

    • us-central1
    • europe-west1
    • asia-southeast1

    トリガーは Firebase Realtime Database インスタンスと同じロケーションに存在する必要があります。詳細については、Realtime Database のロケーションをご覧ください。

  • DESTINATION_RUN_SERVICE: トリガーのイベントを受け取る Cloud Run サービスの名前。サービスは、Cloud Run でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/)に送信された HTTP POST リクエストとしてイベントを受信します。
  • DESTINATION_RUN_REGION: 宛先の Cloud Run サービスがあるリージョン。指定しない場合、サービスはトリガーと同じリージョンにあると見なされます。
  • EVENT_FILTER_TYPE: Firebase Realtime Database イベントの識別子。次のいずれかになります。

    • google.firebase.database.ref.v1.created: データベースでデータが作成されるとイベントが送信されます。
    • google.firebase.database.ref.v1.updated: データベースでデータが更新されるとイベントが送信されます。
    • google.firebase.database.ref.v1.deleted: データベースでデータが削除されるとイベントが送信されます。
    • google.firebase.database.ref.v1.written: データベースでデータの作成、更新、削除が行われるとイベントが送信されます。
  • INSTANCE: 単一のデータベース インスタンスと演算子は次のいずれかになります。

    • 等価。例: --event-filters="instance=INSTANCE"
    • 経路パターン。例: --event-filters-path-pattern="instance=INSTANCE"詳細については、パスパターンについてをご覧ください。
  • REF: パスまたは子でデータの作成、更新、削除が発生したときにイベントを受信するデータベース インスタンス内のパス。

  • PROJECT_NUMBER: Google Cloud プロジェクト番号

注:

  • 以下のフラグは必須です。
    • --event-filters="type=EVENT_FILTER_TYPE"
    • --event-filters="instance=INSTANCE" または --event-filters-path-pattern="instance=INSTANCE"
    • --event-filters-path-pattern="ref=REF"
  • トリガーの作成後に、イベント フィルタのタイプを変更することはできません。代わりに、新しいトリガーを作成して古いトリガーを削除します。
  • --service-account フラグには、トリガーに関連付けられた Identity and Access Management(IAM)サービス アカウントのメールアドレスを指定します。
  • --destination-run-path フラグを使用して、トリガーのイベントが送信される宛先の Cloud Run サービスの相対パスを指定することもできます。

例:

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.database.ref.v1.created" \
    --event-filters="instance=test-instance" \
    --event-filters-path-pattern="ref=users/*" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

このコマンドは、google.firebase.database.ref.v1.created として識別されるイベントに helloworld-trigger というトリガーを作成します。

Firebase Remote Config

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.firebase.remoteconfig.remoteConfig.v1.updated" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

次のように置き換えます。

  • TRIGGER: トリガーの ID または完全修飾識別子
  • DESTINATION_RUN_SERVICE: トリガーのイベントを受け取る Cloud Run サービスの名前。サービスは、Cloud Run でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/)に送信された HTTP POST リクエストとしてイベントを受信します。
  • DESTINATION_RUN_REGION: 宛先の Cloud Run サービスがあるリージョン。指定しない場合、サービスはトリガーと同じリージョンにあると見なされます。
  • PROJECT_NUMBER: Google Cloud プロジェクト番号

注:

  • --location フラグは global にする必要があります。詳細については、Eventarc のロケーションをご覧ください。
  • --event-filters フラグは必須で、タイプを google.firebase.remoteconfig.remoteConfig.v1.updated にする必要があります。Remote Config テンプレートが更新されると、イベントが送信されます。
  • トリガーの作成後に、イベント フィルタのタイプを変更することはできません。代わりに、新しいトリガーを作成して古いトリガーを削除します。
  • --service-account フラグには、トリガーに関連付けられた Identity and Access Management(IAM)サービス アカウントのメールアドレスを指定します。
  • --destination-run-path フラグを使用して、トリガーのイベントが送信される宛先の Cloud Run サービスの相対パスを指定することもできます。

例:

gcloud eventarc triggers create helloworld-trigger \
    --location=global \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.remoteconfig.remoteConfig.v1.updated" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

このコマンドは、google.firebase.remoteconfig.remoteConfig.v1.updated として識別されるイベントに helloworld-trigger というトリガーを作成します。

Firebase Test Lab

gcloud eventarc triggers create TRIGGER \
    --location=global \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \
    --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com

次のように置き換えます。

  • TRIGGER: トリガーの ID または完全修飾識別子
  • DESTINATION_RUN_SERVICE: トリガーのイベントを受け取る Cloud Run サービスの名前。サービスは、Cloud Run でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/)に送信された HTTP POST リクエストとしてイベントを受信します。
  • DESTINATION_RUN_REGION: 宛先の Cloud Run サービスがあるリージョン。指定しない場合、サービスはトリガーと同じリージョンにあると見なされます。
  • PROJECT_NUMBER: Google Cloud プロジェクト番号

注:

  • --location フラグは global にする必要があります。詳細については、Eventarc のロケーションをご覧ください。
  • --event-filters フラグは必須で、タイプを google.firebase.testlab.testMatrix.v1.completed にする必要があります。TestMatrix が完了するとイベントが送信されます。
  • トリガーの作成後に、イベント フィルタのタイプを変更することはできません。代わりに、新しいトリガーを作成して古いトリガーを削除します。
  • --service-account フラグには、トリガーに関連付けられた Identity and Access Management(IAM)サービス アカウントのメールアドレスを指定します。
  • --destination-run-path フラグを使用して、トリガーのイベントが送信される宛先の Cloud Run サービスの相対パスを指定することもできます。

例:

gcloud eventarc triggers create helloworld-trigger \
    --location=global \
    --destination-run-service=helloworld-events \
    --destination-run-region=us-central1 \
    --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \
    --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com

このコマンドは、google.firebase.testlab.testMatrix.v1.completed として識別されるイベントに helloworld-trigger というトリガーを作成します。

Pub/Sub メッセージ(既存のトピック)

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME

次のように置き換えます。

  • TRIGGER: トリガーの ID または完全修飾識別子
  • LOCATION: Eventarc トリガーのロケーション。または、eventarc/location プロパティを設定します(例: gcloud config set eventarc/location us-central1)。

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

  • DESTINATION_RUN_SERVICE: トリガーのイベントを受け取る Cloud Run サービスの名前。サービスは、Cloud Run でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/)に送信された HTTP POST リクエストとしてイベントを受信します。
  • DESTINATION_RUN_REGION: 宛先の Cloud Run サービスがあるリージョン。指定しない場合、サービスはトリガーと同じリージョンにあると見なされます。
  • PROJECT_ID: 実際の Google Cloud プロジェクト ID
  • TOPIC_NAME: 既存の Pub/Sub トピックの名前。トピックは、トリガーと同じプロジェクトに存在する必要があります。

注:

  • --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" フラグは必須です。
  • 各トリガーには複数のイベント フィルタを指定できます。その場合は、--event-filters=[ATTRIBUTE=VALUE,...] フラグにカンマ区切りで指定する必要があります。さらにフィルタを追加するには、このフラグを繰り返し指定します。すべてのフィルタに一致するイベントのみが宛先に送信されます。ワイルドカードと正規表現はサポートされていません。
  • --transport-topic フラグには、既存の Pub/Sub トピックの ID または完全修飾識別子を指定します。
  • --destination-run-path フラグを使用して、トリガーのイベントが送信される宛先の Cloud Run サービスの相対パスを指定することもできます。
  • デフォルトでは、Eventarc 用に作成された Pub/Sub サブスクリプションはアクティビティに関係なく保持され、期限切れになりません。非アクティブ期間を変更するには、サブスクリプションの管理をご覧ください。

例:

  gcloud eventarc triggers create pubsub-trigger-existing \
      --location=us-central1 \
      --destination-run-service=helloworld-events-pubsub \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
      --transport-topic=projects/${PROJECT_ID}/topics/${TOPIC_NAME}

このコマンドにより、projects/${PROJECT_ID}/topics/${TOPIC_NAME} で識別される Pub/Sub トピックに pubsub-trigger-existing というトリガーが作成されます。

Pub/Sub メッセージ(新しいトピック)

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-run-service=DESTINATION_RUN_SERVICE \
    --destination-run-region=DESTINATION_RUN_REGION \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"

次のように置き換えます。

  • TRIGGER: トリガーの ID または完全修飾識別子
  • LOCATION: Eventarc トリガーのロケーション。または、eventarc/location プロパティを設定します(例: gcloud config set eventarc/location us-central1)。

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

  • DESTINATION_RUN_SERVICE: トリガーのイベントを受け取る Cloud Run サービスの名前。サービスは、Cloud Run でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/)に送信された HTTP POST リクエストとしてイベントを受信します。
  • DESTINATION_RUN_REGION: 宛先の Cloud Run サービスがあるリージョン。指定しない場合、サービスはトリガーと同じリージョンにあると見なされます。

注:

  • --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" フラグは必須です。
  • 各トリガーには複数のイベント フィルタを指定できます。その場合は、--event-filters=[ATTRIBUTE=VALUE,...] フラグにカンマ区切りで指定する必要があります。さらにフィルタを追加するには、このフラグを繰り返し指定します。すべてのフィルタに一致するイベントのみが宛先に送信されます。ワイルドカードと正規表現はサポートされていません。
  • --destination-run-path フラグを使用して、トリガーのイベントが送信される宛先の Cloud Run サービスの相対パスを指定することもできます。
  • デフォルトでは、Eventarc 用に作成された Pub/Sub サブスクリプションはアクティビティに関係なく保持され、期限切れになりません。非アクティブ期間を変更するには、サブスクリプションの管理をご覧ください。

例:

  gcloud eventarc triggers create pubsub-trigger-new \
      --location=us-central1 \
      --destination-run-service=helloworld-events-pubsub \
      --destination-run-region=us-central1 \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"

これにより、新しい Pub/Sub トピックと pubsub-trigger-new というトリガーが作成されます。

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

Console を使用したトリガーの作成

Cloud Run コンソール ページでは、Cloud Audit Logs と Pub/Sub イベントタイプのトリガーを作成できます。ただし、直接イベント(Cloud Storage や Firebase のアラートなど)のトリガーを作成するには、gcloud CLI または Eventarc コンソール ページをご覧ください。

  1. 必要に応じて、Eventarc API を有効にします。

    API の有効化

  2. コンソールで [Cloud Run] に移動します。

    [Cloud Run] に移動

  3. サービスのリストで既存のサービスをクリックするか、新しいサービスを作成します。

  4. サービスの詳細ページで、[トリガー] タブをクリックします。

  5. [Eventarc トリガーを追加] をクリックします。

    [Eventarc トリガー] ペインが開きます。イベント ルーティングの最適な方法を決定するには、イベント ルーティング オプションをご覧ください。

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

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

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

    これは、イベントのソースである Google またはパートナーのサービスです。たとえば、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.inAppFeedback: テスターが特定のアプリのアプリ内フィードバックを送信すると、イベントが送信されます。
      • 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 Realtime Database

    Firebase Realtime Database でデータが作成、更新、または削除されると、イベントに応答して、サービスへのリクエストがトリガーされます。

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

      • google.firebase.database.ref.v1.created: データベースでデータが作成されるとイベントが送信されます
      • google.firebase.database.ref.v1.updated: データベースでデータが更新されるとイベントが送信されます
      • google.firebase.database.ref.v1.deleted: データベースでデータが削除されると、イベントが送信されます
      • google.firebase.database.ref.v1.writing: データベースでデータの作成、更新、または削除が行われるとイベントが送信されます
    2. [リージョン] リストでリージョンを選択します。

      このリージョンは、Firebase Realtime Database インスタンスのリージョンと一致する必要があります。詳細については、Eventarc のロケーションをご覧ください。

    3. [フィルタ] セクションで、次を選択します。

      1. データベースの instance 属性に、演算子として次のいずれかを選択します。
      2. [属性値 1] フィールドに、イベントを受信するデータベース インスタンスの名前を入力します。前の手順で選択した演算子に応じて、属性値にはデータベース インスタンス名をそのまま指定するか、パスパターン形式で指定します。
      3. ref 属性では、パスパターンとして演算子を選択します。
      4. [属性値 2] フィールドに、データベース インスタンスのパスを入力します。このパスまたはその子のいずれかでデータの作成、更新、または削除が行われた場合、イベントを受信します。

    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 Audit Logs 経由] の下に表示されるイベントから選択します。

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

      • 任意のリソース - これがデフォルトです。動的に作成され、作成時に 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. Cloud Run サービスを呼び出すサービス アカウントを選択します。

    または新しいサービス アカウントを作成します。

    これにより、トリガーに関連付けられた IAM サービス アカウントのメールアドレスが指定されます。Cloud Run の宛先の場合、サービスを呼び出すときにこのサービス アカウントを使用して ID トークンを生成します。

  10. 受信リクエストの送信先であるサービスの URL パスを指定することもできます。

    これは、トリガーのイベントが送信される宛先サービスの相対パスです。例: //routerouteroute/subroute

  11. トリガーの作成後、[トリガー] タブにチェックマーク が付いていることを確認します。

次のステップ