VPC ネットワークの内部 HTTP エンドポイントにイベントを転送する

Eventarc トリガーは、特定のイベントまたは一連のイベントに関心があることを宣言します。イベント ルーティングを構成するには、トリガーのフィルタ(イベントソースとターゲット宛先を含む)を指定します。

Eventarc は、HTTP リクエストを使用して、イベントを CloudEvents 形式でイベント レシーバーに配信します。

以下では、Virtual Private Cloud(VPC)ネットワークの内部 HTTP エンドポイントにすべてのイベントタイプのイベントをルーティングするように構成方法について説明します。トリガーを構成するには、ネットワーク アタッチメント ID も指定する必要があります。

  • サポートされているイベントタイプは次のとおりです。

    • 直接イベント - Cloud Storage バケット内のオブジェクトの更新や Pub/Sub トピックに公開されたメッセージなど、仲介されていないイベントによってトリガーされます。

    • Cloud Audit Logs イベント - Cloud Audit Logs によってログが生成されるとトリガーされます。

    • サードパーティ イベント - Eventarc ソースを提供する Google 以外のプロバイダのイベントによってトリガーされます。

  • 内部 HTTP エンドポイントには、Virtual Private Cloud ネットワークの任意の HTTP エンドポイントの内部 IP アドレスまたは完全修飾 DNS 名(FQDN)を使用できます。イベントの宛先の例を 2 つ示します。

    • Compute Engine 仮想マシン(VM)インスタンス - Compute Engine インスタンスは、Google が提供する Linux および Windows Server 用の公開イメージだけでなく、既存のシステムから作成またはインポートできる非公開のカスタム イメージも実行できます。詳細については、仮想マシン インスタンスをご覧ください。
    • 内部ロードバランサ - Google Cloud 内部アプリケーション ロードバランサは、プロキシベースのリージョン レイヤ 7 ロードバランサです。内部 IP アドレスの背後でサービスを実行し、スケーリングできます。内部アプリケーション ロードバランサは、Compute Engine、Google Kubernetes Engine(GKE)、Cloud Run でホストされているバックエンドに HTTP / HTTPS のトラフィックを分散します。詳細については、内部アプリケーション ロードバランサの概要をご覧ください。
  • VPC ネットワークは、Google の本番環境ネットワーク内に仮想的に実装された物理ネットワークです。共有 VPC ネットワークは、ホスト プロジェクトで定義された VPC ネットワークであり、関連するサービス プロジェクト内の適格リソース用に集中管理された共有ネットワークとして使用できます。

  • ネットワーク アタッチメントは、プロデューサーがコンシューマー VPC ネットワークに接続することを明示的に承認できるリージョン リソースです。イベントを公開するために、Eventarc はネットワーク アタッチメントを使用して、VPC ネットワークでホストされている内部 HTTP エンドポイントとの接続を確立します。

始める前に

VPC ネットワークの内部 HTTP エンドポイントにイベントを転送する Eventarc トリガーを作成する前に、HTTP 宛先サービスを含む同じネットワークとリージョン内の接続を受け入れるネットワーク アタッチメントを作成する必要があります。

以下の手順は、VPC ネットワークとサブネットワークがすでに作成されており、HTTP 宛先サービスがデプロイされていることを前提としています。

詳細については、VPC ネットワークの内部 HTTP エンドポイントで Pub/Sub イベントを受信するをご覧ください。ここには、VPC ネットワークに内部 HTTP エンドポイントをデプロイして、Pub/Sub イベントをエンドポイントにルーティングする方法が記載されています。

既知の制限事項

VPC ネットワークの内部 HTTP エンドポイントにイベントをルーティングする場合の制限事項は次のとおりです。

  • 同じ DNS 名に複数の Eventarc トリガーを作成することはできません。

  • 内部 HTTP エンドポイントの Eventarc トリガーには、プロジェクトごとに 100 個までという上限があります。

  • サポートされている Eventarc トリガーのロケーションは次のとおりです。

    • asia-east1
    • europe-north1
    • europe-west1
    • us-central1
    • us-east1

トリガーを作成する準備

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

コンソール

  1. Google Cloud コンソールのプロジェクト セレクタ ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  2. Cloud Logging API と Eventarc API を有効にします。

    API を有効にする

  3. 該当する場合は、直接イベントに関連する API を有効にします。たとえば、Cloud Functions イベントの場合は cloudfunctions.googleapis.com を有効にします。

  4. アカウントがない場合は、ユーザー管理のサービス アカウントを作成し、Eventarc がターゲット サービスのイベントを管理できるように、必要なロールと権限を付与します。

    1. Google Cloud コンソールで [サービス アカウントの作成] ページに移動します。

      [サービス アカウントの作成] に移動

    2. プロジェクトを選択します。

    3. [サービス アカウント名] フィールドに名前を入力します。Google Cloud コンソールでは、この名前に基づいて [サービス アカウント ID] フィールドに値が設定されます。

      [サービス アカウントの説明] フィールドに説明を入力します。例: Service account for event trigger

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

    5. 適切なアクセス権を付与するには、[ロールを選択] リストで、サービス アカウントに必要な Identity and Access Management(IAM)ロールを選択します。詳細については、VPC ネットワークの内部 HTTP エンドポイントのロールと権限をご覧ください。

      ロールを追加するには、[別のロールを追加] をクリックして各ロールを追加します。

    6. [続行] をクリックします。

    7. アカウントの作成を完了するには、[完了] をクリックします。

  5. Cloud Storage からの直接イベントのトリガーを作成する場合は、Cloud Storage サービス エージェントに Pub/Sub パブリッシャーのロールroles/pubsub.publisher)を付与します。

    1. Google Cloud コンソールの [IAM] ページに移動します。

      [IAM] に移動

    2. [Google 提供のロール付与を含める] チェックボックスをオンにします。

    3. [プリンシパル] 列で、service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com 形式の Cloud Storage サービス エージェントを探します。次に、対応する行の「プリンシパルを編集します」アイコン をクリックします。

    4. [ ロールを追加] または [ 別のロールを追加] をクリックします。

    5. [ロールを選択] リストで「Pub/Sub パブリッシャー」をフィルタして、ロールを選択します。

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

  6. VPC ネットワークの内部 HTTP エンドポイントの URI が、Cloud DNS によって解決可能なサービスの内部 DNS 名を使用している場合は、VPC ホスト プロジェクトの DNS ピアロールroles/dns.peer)を Eventarc サービス エージェントに付与します。

    VPC ネットワークの構成方法によっては、VPC ホスト プロジェクトが Eventarc トリガー プロジェクトになる場合があります。

    1. Google Cloud コンソールのプロジェクト セレクタ ページで、VPC ホスト プロジェクトを選択します。

      プロジェクト セレクタに移動

    2. Google Cloud コンソールの [IAM] ページに移動します。

      [IAM] に移動

    3. [Google 提供のロール付与を含める] チェックボックスをオンにします。

    4. Eventarc サービス エージェントを変更するか、プリンシパルとして追加します。

      • Eventarc サービス エージェントにプロジェクトの他のロールがすでにある場合は、service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com という形式のプリンシパルを含む行を見つけて、「プリンシパルを編集します」アイコン をクリックし、[ 別のロールを追加] をクリックします。

      • Eventarc サービス エージェントにプロジェクトの既存のロールがない場合は、[ アクセス権を付与] をクリックして、service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com という形式でメールアドレスを入力します。

      PROJECT_NUMBER は、Eventarc トリガー プロジェクトの Google Cloud プロジェクト番号に置き換えます。プロジェクト番号は、Google Cloud コンソールの [ようこそ] ページで確認できます。また、次のコマンドで確認することもできます。

      gcloud projects describe PROJECT_ID --format='value(projectNumber)'
    5. [ロールを選択] リストで「DNS ピア」をフィルタして、ロールを選択します。

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

gcloud

  1. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  2. Cloud Logging、Eventarc、Eventarc Publishing API を有効にします。

    gcloud services enable logging.googleapis.com \
      eventarc.googleapis.com \
      eventarcpublishing.googleapis.com
    
  3. 該当する場合は、イベントに関連する API を有効にします。たとえば、Cloud Functions イベントの場合は cloudfunctions.googleapis.com を有効にします。

  4. アカウントがない場合は、ユーザー管理のサービス アカウントを作成し、Eventarc がターゲット サービスのイベントを管理できるように、必要なロールと権限を付与します。

    1. サービス アカウントを作成します。

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
      

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

    2. 必要な Identity and Access Management(IAM)のロールまたは権限を付与します。詳細については、VPC ネットワークの内部 HTTP エンドポイントのロールと権限をご覧ください。

  5. VPC ネットワークの内部 HTTP エンドポイントの URI が、Cloud DNS によって解決可能なサービスの内部 DNS 名を使用している場合は、VPC ホスト プロジェクトの DNS ピアロールroles/dns.peer)を Eventarc サービス エージェントに付与します。

    VPC ネットワークの構成方法によっては、VPC ホスト プロジェクトが Eventarc トリガー プロジェクトになる場合があります。

    gcloud projects add-iam-policy-binding VPC_HOST_PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com \
        --role=roles/dns.peer

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

    • VPC_HOST_PROJECT_ID: VPC ホスト プロジェクトの Google Cloud プロジェクト ID。
    • PROJECT_NUMBER: Eventarc トリガー プロジェクトの Google Cloud プロジェクト番号。プロジェクト番号は、Google Cloud コンソールの [ようこそ] ページで確認できます。また、次のコマンドで確認することもできます。
    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
  6. Cloud Storage からの直接イベントのトリガーを作成する場合は、プロジェクトに対する Pub/Sub パブリッシャーのロールroles/pubsub.publisher)を Cloud Storage サービス エージェントに付与します。

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com \
        --role=roles/pubsub.publisher

トリガーを作成する

Eventarc トリガーは、Google Cloud CLI または Google Cloud コンソールを使用して作成できます。

コンソール

  1. Google Cloud コンソールで、[Eventarc] の [トリガー] ページに移動します。

    [トリガー] に移動

  2. [トリガーを作成] をクリックします。
  3. トリガー名を入力します。

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

  4. [トリガーのタイプ] で、[Google のソース] または [サードパーティ] を選択します。
  5. イベント プロバイダを選択します。

    このサービスはイベントのソースとなります。Google ソースの場合、これは直接、または監査ログを介して行われます。

  6. ルーティングするイベントタイプに応じて、次のいずれかを行います。
    1. 直接イベント - [イベントタイプ] リストで、直接イベントからイベントタイプを選択します。
      1. Cloud Pub/Sub の直接イベントの場合は、[Cloud Pub/Sub トピックを選択してください] リストでトピックを選択するか、デフォルトの [なし] を使用して新しいトピックを作成します。
      2. Cloud Storage の直接イベントの場合は、Cloud Storage バケットのグローバルに一意の識別子を指定または参照します。
    2. 監査ログイベント - [イベントタイプ] リストで、Cloud Audit Logs 経由のイベントからイベントタイプを選択して、次のいずれかを選択します。
      • 任意のリソース - これがデフォルトです。動的に作成され、作成時に ID が生成されるリソースが含まれます。
      • 特定のリソース - 完全なリソース名を指定する必要があります。
      • パスパターン - パスパターンを使用してリソースをフィルタできます。たとえば、「projects/_/buckets/eventarc-bucket/objects/random.txt」または「projects/_/buckets/**/r*.txt」と入力します。
    3. サードパーティ イベント - [チャネル] リストでチャネルを選択し、[イベントタイプ] リストでイベントを選択します。

      詳しくは、チャネルを作成して詳細を取得するをご覧ください。

  7. イベントタイプに応じて、[イベントデータのコンテンツ タイプ] リストで application/json または application/protobuf を選択して、イベント ペイロードのエンコードを指定します。

    JSON 形式のイベント ペイロードは、Protobuf 形式のイベント ペイロードよりも大きくなります。イベントの宛先とイベントサイズの制限によっては、信頼性に影響する可能性があります。詳細については、既知の問題をご覧ください。

  8. イベント プロバイダで必要な場合は、[フィルタを追加] をクリックして、次の値を指定します。
    1. 選択した直接イベントに応じて、[属性 1] フィールドにイベント フィルタとして機能するリソース ID を選択します。
    2. 演算子を選択します。
    3. [属性の値 1] フィールドに、選択した演算子に応じて正確な値を入力するか、パスパターンを適用します。
    4. [属性 2] フィールドがある場合は、適切な値を指定します。
  9. [リージョン] リストでロケーションを選択します。

    パフォーマンスやデータ所在地の問題を回避するため、このロケーションは、イベントを生成している Google Cloud サービスのロケーションと一致させる必要があります。

    このイベントの宛先では、次の場所のみがサポートされます。

    • asia-east1
    • europe-north1
    • europe-west1
    • us-east1

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

  10. サービスを呼び出すサービス アカウントを選択します。

    新しいサービス アカウントを作成することもできます。

    トリガーに関連付けられ、以前に Eventarc で必要な特定のロールを付与した IAM サービス アカウントのメールアドレスを指定します。

  11. [イベントの宛先] リストで、[HTTP エンドポイント(内部)] を選択します。
    1. [宛先 URI] を指定します。これは、トリガーのイベントを受け取る VPC ネットワークの内部 HTTP エンドポイントの URI です。URI は、ネットワーク アタッチメントによって指定される VPC ネットワークの静的内部 IP アドレスか、Cloud DNS によって解決可能なサービスの内部 DNS 名のいずれかです。

      HTTP エンドポイントが内部 DNS 名を使用する場合、Eventarc は DNS ピアリング ゾーンを自動的に作成し、DNS リクエストをターゲット VPC ネットワークの DNS ゾーンに転送します。DNS ピアリングを使用すると、あるゾーンの名前空間を送信元とするレコードに対するリクエストを別の VPC ネットワークに送信できます。詳細については、ピアリング ゾーンピアリング ゾーンを作成するをご覧ください。

      同じ DNS 名に複数のトリガーを作成することはできません。

    2. [ネットワーク アタッチメント] リストで、ネットワーク アタッチメント リソースの識別子を選択します。この識別子は、ネットワーク アタッチメントの作成後に生成されます。詳細については、ネットワーク アタッチメントを作成するをご覧ください。

      ネットワーク アタッチメントを使用すると、サービス プロデューサーの VPC ネットワークがコンシューマーの VPC ネットワークへの接続を開始できます。Eventarc は、ネットワーク アタッチメントを使用して、コンシューマーの VPC ネットワークでホストされている内部 HTTP エンドポイントとの接続を確立し、イベントを公開します。

      ネットワーク アタッチメントを作成するときに、プロデューサーの承認リストと拒否リストを使用して接続を明示的に承認できます。Eventarc は、適切なプロジェクト ID を使用してネットワーク アタッチメントの承認リストを更新できます。ユーザー側での操作は必要ありません。

  12. [作成] をクリックします。
  13. トリガーの作成後は、イベントソースのフィルタを変更できません。代わりに、新しいトリガーを作成して古いトリガーを削除します。詳しくは、トリガーの管理をご覧ください。

gcloud

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

直接イベント

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-http-endpoint-uri=ENDPOINT_URI \
    --network-attachment=NETWORK_ATTACHMENT_ID \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="COLLECTION_ID=RESOURCE_ID" \
    --event-filters-path-pattern="COLLECTION_ID=PATH_PATTERN" \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

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

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

    パフォーマンスやデータ所在地の問題を回避するため、このロケーションは、イベントを生成している Google Cloud サービスのロケーションと一致させる必要があります。

    このイベントの宛先では、次の場所のみがサポートされます。

    • asia-east1
    • europe-north1
    • europe-west1
    • us-central1
    • us-east1

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

  • ENDPOINT_URI: トリガーのイベントを受け取る VPC ネットワーク内の内部 HTTP エンドポイントの URI。URI は、ネットワーク アタッチメントによって指定される VPC ネットワークの静的内部 IP アドレスか、Cloud DNS によって解決可能なサービスの内部 DNS 名のいずれかです。

    HTTP エンドポイントが内部 DNS 名を使用する場合、Eventarc は DNS ピアリング ゾーンを自動的に作成し、DNS リクエストをターゲット VPC ネットワークの DNS ゾーンに転送します。DNS ピアリングを使用すると、あるゾーンの名前空間を送信元とするレコードに対するリクエストを別の VPC ネットワークに送信できます。詳細については、ピアリング ゾーンピアリング ゾーンを作成するをご覧ください。

    同じ DNS 名に複数のトリガーを作成することはできません。

  • NETWORK_ATTACHMENT_ID: ネットワーク アタッチメント リソースの一意の識別子。この識別子は、ネットワーク アタッチメントの作成後に生成されます。詳細については、ネットワーク アタッチメントを作成するをご覧ください。

    ネットワーク アタッチメントを使用すると、サービス プロデューサーの VPC ネットワークがコンシューマーの VPC ネットワークへの接続を開始できます。Eventarc は、ネットワーク アタッチメントを使用して、コンシューマーの VPC ネットワークでホストされている内部 HTTP エンドポイントとの接続を確立し、イベントを公開します。

    ネットワーク アタッチメントを作成するときに、プロデューサーの承認リストと拒否リストを使用して接続を明示的に承認できます。Eventarc は、適切なプロジェクト ID を使用してネットワーク アタッチメントの承認リストを更新できます。ユーザー側での操作は必要ありません。

  • EVENT_FILTER_TYPE: イベントの識別子。メソッドの API 呼び出しが成功すると、イベントが生成されます。長時間実行オペレーションの場合、イベントは、アクションが正常に完了したときにのみ、オペレーションの終了時に生成されます。サポートされている直接イベントタイプのリストをご覧ください。

  • COLLECTION_ID(省略可): イベント フィルタとして機能するリソース コンポーネント。たとえば、Cloud Functions の場合は function です。

  • RESOURCE_ID: 関連するコレクションのフィルタリング値として使用されるリソースの ID。詳細については、リソース ID をご覧ください。

  • PATH_PATTERN: リソースをフィルタする場合に適用するパスパターン

  • SERVICE_ACCOUNT_NAME: ユーザー管理のサービス アカウントの名前。

  • PROJECT_ID: Google Cloud プロジェクト ID。

注:

  • --event-filters="type=EVENT_FILTER_TYPE" フラグは必須です。他のイベント フィルタが設定されていない場合は、すべてのリソースのイベントが照合されます。
  • 作成後に EVENT_FILTER_TYPE を変更することはできません。EVENT_FILTER_TYPE を変更するには、新しいトリガーを作成して古いトリガーを削除します。
  • 各トリガーには複数のイベント フィルタを指定できます。その場合は、--event-filters=[ATTRIBUTE=VALUE,...] フラグにカンマ区切りで指定する必要があります。さらにフィルタを追加するには、このフラグを繰り返し指定します。すべてのフィルタに一致するイベントのみが宛先に送信されます。ワイルドカードと正規表現はサポートされていません。ただし、--event-filters-path-pattern フラグを使用する場合は、リソースのパスパターンを定義できます。
  • --service-account フラグには、トリガーに関連付けられた IAM サービス アカウントのメールアドレスを指定します。

例:

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-http-endpoint-uri=http://my-vm.us-central1-a.c.my-project.internal \
    --network-attachment="projects/my-project/regions/us-central1/networkAttachments/my-attachment-name" \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --service-account=my-service-account@my-project.iam.gserviceaccount.com

監査ログイベント

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-http-endpoint-uri=ENDPOINT_URI \
    --network-attachment=NETWORK_ATTACHMENT_ID \
    --event-filters="type=google.cloud.audit.log.v1.written" \
    --event-filters="serviceName=SERVICE_NAME" \
    --event-filters="methodName=METHOD_NAME" \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

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

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

    パフォーマンスやデータ所在地の問題を回避するため、このロケーションは、イベントを生成している Google Cloud サービスのロケーションと一致させる必要があります。次のロケーションがサポートされています。

    • asia-east1
    • europe-north1
    • europe-west1
    • us-central1
    • us-east1

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

  • ENDPOINT_URI: トリガーのイベントを受け取る VPC ネットワーク内の内部 HTTP エンドポイントの URI。URI は、ネットワーク アタッチメントによって指定される VPC ネットワークの静的内部 IP アドレスか、Cloud DNS によって解決可能なサービスの内部 DNS 名のいずれかです。

    HTTP エンドポイントが内部 DNS 名を使用する場合、Eventarc は DNS ピアリング ゾーンを自動的に作成し、DNS リクエストをターゲット VPC ネットワークの DNS ゾーンに転送します。DNS ピアリングを使用すると、あるゾーンの名前空間を送信元とするレコードに対するリクエストを別の VPC ネットワークに送信できます。詳細については、ピアリング ゾーンピアリング ゾーンを作成するをご覧ください。

    同じ DNS 名に複数のトリガーを作成することはできません。

  • NETWORK_ATTACHMENT_ID: ネットワーク アタッチメント リソースの一意の識別子。この識別子は、ネットワーク アタッチメントの作成後に生成されます。詳細については、ネットワーク アタッチメントを作成するをご覧ください。

    ネットワーク アタッチメントを使用すると、サービス プロデューサーの VPC ネットワークがコンシューマーの VPC ネットワークへの接続を開始できます。Eventarc は、ネットワーク アタッチメントを使用して、コンシューマーの VPC ネットワークでホストされている内部 HTTP エンドポイントとの接続を確立し、イベントを公開します。

    ネットワーク アタッチメントを作成するときに、プロデューサーの承認リストと拒否リストを使用して接続を明示的に承認できます。Eventarc は、適切なプロジェクト ID を使用してネットワーク アタッチメントの承認リストを更新できます。ユーザー側での操作は必要ありません。

  • SERVICE_NAME: Google Cloud サービスの識別子。サポートされている監査ログ イベント タイプのリストをご覧ください。

  • METHOD_NAME: オペレーションの ID。サポートされている監査ログ イベント タイプのリストをご覧ください。

  • SERVICE_ACCOUNT_NAME: ユーザー管理のサービス アカウントの名前。

  • PROJECT_ID: Google Cloud プロジェクト ID。

注:

  • 以下のフラグは必須です。
    • --event-filters="type=google.cloud.audit.log.v1.written"
    • --event-filters="serviceName=VALUE"
    • --event-filters="methodName=VALUE"
  • --event-filters="resourceName=VALUE" フラグを使用してリソースの完全なパスを指定することで、特定のリソースのイベントをフィルタリングすることもできます。動的に作成され、作成時に ID が生成されるリソースの場合は、このフラグを省略します。または、--event-filters-path-pattern="resourceName=VALUE" フラグを使用してリソースパス パターンを指定し、一連のリソースのイベントをフィルタリングします。
  • 各トリガーには複数のイベント フィルタを指定できます。その場合は、--event-filters=[ATTRIBUTE=VALUE,...] フラグにカンマ区切りで指定する必要があります。さらにフィルタを追加するには、このフラグを繰り返し指定します。すべてのフィルタに一致するイベントのみが宛先に送信されます。ワイルドカードと正規表現はサポートされていません。ただし、--event-filters-path-pattern フラグを使用する場合は、リソースのパスパターンを定義できます。
  • トリガーの作成後に、イベント フィルタのタイプを変更することはできません。別のイベントタイプには、新しいトリガーを作成する必要があります。
  • --service-account フラグには、トリガーに関連付けられた IAM サービス アカウントのメールアドレスを指定します。

例:

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-http-endpoint-uri=http://10.10.10.2 \
    --network-attachment="projects/my-project/regions/us-central1/networkAttachments/my-attachment" \
    --event-filters="type=google.cloud.audit.log.v1.written" \
    --event-filters="serviceName=eventarc.googleapis.com" \
    --event-filters="methodName=google.cloud.eventarc.v1.Eventarc.GetTrigger" \
    --event-filters="resourceName=projects/my-project/locations/us-central1/triggers/my-trigger" \
    --service-account=my-service-account@my-project.iam.gserviceaccount.com

サードパーティのイベント

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-http-endpoint-uri=ENDPOINT_URI \
    --network-attachment=NETWORK_ATTACHMENT_ID \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --channel=CHANNEL_NAME \
    --project=PROJECT_ID \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

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

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

    パフォーマンスやデータ所在地の問題を回避するため、このロケーションは、イベントを生成している Google Cloud サービスのロケーションと一致させる必要があります。

    このイベントの宛先では、次の場所のみがサポートされます。

    • asia-east1
    • europe-north1
    • europe-west1
    • us-central1
    • us-east1

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

  • ENDPOINT_URI: トリガーのイベントを受け取る VPC ネットワーク内の内部 HTTP エンドポイントの URI。URI は、ネットワーク アタッチメントによって指定される VPC ネットワークの静的内部 IP アドレスか、Cloud DNS によって解決可能なサービスの内部 DNS 名のいずれかです。

    HTTP エンドポイントが内部 DNS 名を使用する場合、Eventarc は DNS ピアリング ゾーンを自動的に作成し、DNS リクエストをターゲット VPC ネットワークの DNS ゾーンに転送します。DNS ピアリングを使用すると、あるゾーンの名前空間を送信元とするレコードに対するリクエストを別の VPC ネットワークに送信できます。詳細については、ピアリング ゾーンピアリング ゾーンを作成するをご覧ください。

    同じ DNS 名に複数のトリガーを作成することはできません。

  • NETWORK_ATTACHMENT_ID: ネットワーク アタッチメント リソースの一意の識別子。この識別子は、ネットワーク アタッチメントの作成後に生成されます。詳細については、ネットワーク アタッチメントを作成するをご覧ください。

    ネットワーク アタッチメントを使用すると、サービス プロデューサーの VPC ネットワークがコンシューマーの VPC ネットワークへの接続を開始できます。Eventarc は、ネットワーク アタッチメントを使用して、コンシューマーの VPC ネットワークでホストされている内部 HTTP エンドポイントとの接続を確立し、イベントを公開します。

    ネットワーク アタッチメントを作成するときに、プロデューサーの承認リストと拒否リストを使用して接続を明示的に承認できます。Eventarc は、適切なプロジェクト ID を使用してネットワーク アタッチメントの承認リストを更新できます。ユーザー側での操作は必要ありません。

  • EVENT_FILTER_TYPE: プロバイダがサポートするイベントのタイプ。サポートされているサードパーティのイベントタイプのリストをご覧ください。

  • CHANNEL_NAME: チャンネルの名前。詳細については、チャネルを作成して詳細を取得するをご覧ください。

  • PROJECT_ID: Google Cloud プロジェクト ID。

  • SERVICE_ACCOUNT_NAME: ユーザー管理のサービス アカウントの名前。

注:

  • --event-filters="type=EVENT_FILTER_TYPE" フラグは必須です。他のイベント フィルタが設定されていない場合は、すべてのリソースのイベントが照合されます。
  • 作成後に EVENT_FILTER_TYPE を変更することはできません。EVENT_FILTER_TYPE を変更するには、新しいトリガーを作成して古いトリガーを削除します。
  • 各トリガーには複数のイベント フィルタを指定できます。その場合は、--event-filters=[ATTRIBUTE=VALUE,...] フラグにカンマ区切りで指定する必要があります。さらにフィルタを追加するには、このフラグを繰り返し指定します。すべてのフィルタに一致するイベントのみが宛先に送信されます。ワイルドカードと正規表現はサポートされていません。
  • --service-account フラグには、トリガーに関連付けられた IAM サービス アカウントのメールアドレスを指定します。

例:

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-http-endpoint-uri=http://my-vm.us-central1-a.c.my-project.internal \
    --network-attachment="projects/my-project/regions/us-central1/networkAttachments/my-attachment-name" \
    --event-filters="type=third-party-event-type" \
    --channel=my-channel \
    --project=my-project-ID \
    --service-account=my-service-account@my-project.iam.gserviceaccount.com

トリガーを一覧表示する

トリガーの作成を確認するには、Google Cloud CLI または Google Cloud コンソールを使用して Eventarc トリガーを一覧表示します。

コンソール

  1. Google Cloud コンソールで、[Eventarc] の [トリガー] ページに移動します。

    [トリガー] に移動

    このページには、すべてのロケーションのトリガーが一覧表示されます。また、名前、リージョン、イベント プロバイダ、宛先などの詳細情報も表示されます。

  2. トリガーをフィルタするには:

    1. [ フィルタ] フィールドまたは [トリガーをフィルタリング] フィールドをクリックします。
    2. [プロパティ] リストで、トリガーをフィルタするオプションを選択します。

    1 つのプロパティを選択することも、論理演算子 OR を使用して複数のプロパティを追加することもできます。

  3. トリガーを並べ替えるには、サポートされている列見出しの横にある [ 並べ替え] をクリックします。

gcloud

次のコマンドを実行してトリガーを一覧表示します。

gcloud eventarc triggers list --location=-

すべてのロケーションのトリガーが一覧表示されます。名前、タイプ、宛先、ステータスなどの詳細情報も表示されます。

次のステップ