イベントを受信する登録を作成する

登録は、特定のバスへのサブスクリプションを識別します。登録では、宛先にルーティングされるメッセージを決定する一致条件を定義します。また、一致したメッセージが転送されるパイプラインも指定します。パイプラインを使用すると、ターゲット宛先を構成できます。また、一致したイベントを宛先に配信する前に変換するオプションも提供されます。

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

  • パイプラインと登録は同じ Google Cloud プロジェクトに存在する必要があります。(バスは同じプロジェクトまたは別のプロジェクトに配置できます)。
  • 1 つのパイプラインを複数の登録に使用できます。
  • パイプラインで転送されるメッセージのターゲットとして指定できるのは、1 つの宛先のみです。
  • パイプラインまたは登録を構成する前に、Eventarc Advanced バスを作成しておく必要があります。

必要なロール

Identity and Access Management(IAM)ロールには、Google Cloud リソースに対して特定の操作を実行できる一連の権限が含まれています。パイプラインと登録を作成してメッセージを転送するには、次のロールと権限が必要です。

  • パイプラインの作成に必要な権限を取得するには、パイプライン プロジェクトに対する Eventarc デベロッパーroles/eventarc.developer)IAM ロールを付与するよう管理者に依頼してください。この事前定義ロールには、パイプラインの作成に必要な eventarc.pipelines.create 権限が含まれています。
  • 登録の作成に必要な権限を取得するには、登録プロジェクトに対する Eventarc デベロッパーroles/eventarc.developer)IAM ロールを付与するよう管理者に依頼してください。この事前定義ロールには、登録の作成に必要な eventarc.enrollments.create 権限が含まれています。
  • バスの使用に必要な権限を取得するには、バス プロジェクトに対する Eventarc メッセージ バス ユーザーroles/eventarc.messageBusUser)IAM ロールを付与するよう管理者に依頼してください。この事前定義ロールには、バスの使用に必要な eventarc.buses.use 権限が含まれています。

ロールの付与の詳細については、アクセス権の管理をご覧ください。カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

イベントを受信する登録

パイプラインと登録は、Google Cloud コンソールまたは Google Cloud CLI を使用して作成できます。

Console

Google Cloud コンソールの [パイプライン] ページで、パイプラインと登録の両方を同時に作成できます。

  1. 登録を作成するには、Google Cloud コンソールで [Eventarc] > [パイプライン] ページに移動します。

    [Pipelines] に移動

  2. [Create pipeline] をクリックします。

  3. [パイプラインの詳細] ペインで、次の操作を行います。

    1. パイプライン名を入力します。これはパイプラインの ID です。
    2. [リージョン] リストで、パイプラインをデプロイするリージョンを選択します。パイプラインは、バスと同じリージョンに作成する必要があります。詳細については、Eventarc の Advanced のロケーションをご覧ください。
    3. 省略可: デフォルトの構成を変更して、イベントを再試行できます。
    4. [暗号化] で、デフォルトの Google 管理の暗号鍵を承認するか、[Cloud KMS 鍵] を選択します。詳細については、顧客管理の暗号鍵(CMEK)を使用するをご覧ください。
    5. [Cloud KMS 鍵] を選択した場合は、次の操作を行います。

      1. [鍵の種類] リストで、鍵を管理する方法を選択します。

        鍵を手動で管理することも、Autokey を使用してキーリングと鍵をオンデマンドで生成することもできます。Autokey オプションが無効になっている場合、このオプションは現在のリソースタイプとまだ統合されていません。

      2. [顧客管理の暗号鍵を選択] で鍵を選択します。

        顧客管理の暗号鍵を表示するには、リージョンを選択する必要があります。

      3. (省略可)鍵のリソース名を手動で入力するには、[顧客管理の暗号鍵を選択] リストで [手動でキーを入力] をクリックして、指定された形式で鍵の名前を入力します。

      4. プロンプトが表示されたら、Eventarc Service Agentcloudkms.cryptoKeyEncrypterDecrypter ロールを付与します。

    6. 省略可: ラベルを追加するには、 [ラベルを追加] をクリックします。ラベルは、Google Cloud リソースの整理で役立つ Key-Value ペアです。詳細については、ラベルとはをご覧ください。

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

  4. [登録] ペインで、次の操作を行います。

    1. [登録を追加] をクリックします。
    2. [登録名] を入力します。
    3. [バス] リストで、定期購入するバスを選択します。
    4. [CEL 式] フィールドに、CEL を使用して評価式を記述します。次に例を示します。

      message.type == "google.cloud.dataflow.job.v1beta3.statusChanged"

      デフォルトの式 true は、すべてのメッセージがフィルタなしで転送されることを示します。

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

    6. 別の登録を追加するか、[続行] をクリックします。

  5. 省略可: [イベント メディエーション] ペインで、次の操作を行うか、[続行] をクリックします。

    1. [変換を適用] チェックボックスをオンにします。
    2. [インバウンド形式] リストで、該当する形式を選択します。

      変換を適用するときに、パイプラインのインバウンド データ形式を指定する必要があります。また、すべてのイベントがその形式と一致している必要があります。

    3. Avro 形式または Protobuf 形式の場合は、受信スキーマを指定する必要があります。必要に応じて、受信スキーマをアップロードできます。詳細については、受信したイベントをフォーマットするをご覧ください。

    4. [CEL 式] フィールドに、CEL を使用して変換式を記述します。

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

  6. [宛先] ペインで、次の操作を行います。

    1. [宛先の種類] リストで、メッセージを転送する宛先の種類を選択します。宛先のタイプに応じて、次の操作を行います。

      • HTTP エンドポイント: 宛先 URI を指定します。ホストは、Virtual Private Cloud(VPC)ネットワークからアドレス指定可能な静的 IP アドレス、または Cloud DNS を使用して解決可能なサービスの内部 ドメイン名システム(DNS)ホスト名のいずれかです。

        この宛先タイプを使用して、Cloud Run 関数をターゲットにできます。

      • Eventarc Advanced バス: Eventarc Advanced バスを選択します。

      • Workflows ワークフロー: Workflows ワークフローを選択します。

      • Pub/Sub トピック: Pub/Sub トピックを選択または作成します。

      • Cloud Run サービス(HTTP 経由): ルート URL パス(/)に送信される HTTP POST リクエストとしてイベントを受信する Cloud Run サービスを選択します。必要に応じて、イベントを送信する宛先サービスの相対 URL パスを指定できます。

      • Cloud Run ジョブ(HTTP 経由): HTTP POST リクエストとしてイベントを受信する Cloud Run ジョブを選択します。

    2. ネットワーク アタッチメントを指定する。

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

      ネットワーク アタッチメントを参照するPrivate Service Connect インターフェースからの接続を自動的に受け入れるネットワーク アタッチメントを作成できます。宛先エンドポイントを含むネットワークとリージョンにネットワーク アタッチメントを作成します。

      DNS アドレス(Cloud Run、Pub/Sub、Workflows、または他の Eventarc Advanced バスなど)を使用して Google の宛先にメッセージを転送する場合は、ネットワーク アタッチメントで使用されるサブネットで限定公開の Google アクセスが有効になっていることを確認してください。そうしないと、DNS アドレスを解決できません。

    3. 必要に応じて、[アウトバウンド形式] リストで形式を選択します。

      パイプラインにインバウンド データ形式が指定されていない場合、アウトバウンド形式を設定することはできません。

    4. 必要に応じて、メッセージ バインディングを適用します。詳細については、メッセージ バインディングを定義するをご覧ください。

    5. 認証を有効にするには、[認証を有効にする] チェックボックスをオンにします。

      1. [Auth ヘッダー] リストで、生成して HTTP リクエストの Authorization ヘッダーとしてアタッチするトークンのタイプを選択します。

        • 通常、OAuth トークンは、*.googleapis.com でホストされている Google API を呼び出す場合にのみ使用する必要があります。必要に応じて、このトークンのスコープを指定します。指定しない場合、デフォルトは https://www.googleapis.com/auth/cloud-platform になります。Google Cloud サービスの場合は、すべての Google Cloud APIs を含む https://www.googleapis.com/auth/cloud-platform スコープと、きめ細かいアクセス制御を提供する Identity and Access Management(IAM)を使用することをおすすめします。

          別の Eventarc Advanced バス、Pub/Sub、Workflows へのすべてのリクエストには、いずれかの承認済みサービス アカウント用に Google によって署名された OAuth トークンを含む HTTP 認証ヘッダーが必要です。

        • OIDC トークンは、トークンを自分で検証するエンドポイントなど、さまざまなシナリオで使用できます。また、このトークンの対象となるオーディエンスを指定します。通常は、ターゲット パイプラインの URL と一致する必要があります。指定しない場合、リクエスト パラメータを含む URL 全体が使用されます。

          Cloud Run はリクエストごとに IAM チェックを実行します。run.routes.invoke 権限を使用して、次のいずれかの方法で Cloud Run サービスにアクセスできるユーザーを構成できます。

          • サービス アカウントまたはグループを選択して、サービスへのアクセスを許可する権限を付与します。すべてのリクエストには、いずれかの承認済みサービス アカウント用に Google によって署名された OpenID Connect トークンを含む HTTP 認証ヘッダーが必要です。

          • 未承認のアクセスを許可する allUsers に権限を付与します。

          詳細については、Cloud Run のアクセス制御をご覧ください。

        詳しくは、トークンの種類をご覧ください。

      2. [サービス アカウント] リストで、宛先サービスを呼び出すサービス アカウントを選択します。または、新しいサービス アカウントを作成することもできます。

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

  7. [作成] をクリックします。

gcloud

gcloud CLI を使用する場合は、まずパイプラインを作成してから、適切なコマンドを使用して登録を作成します。

パイプライン

  1. ターミナルを開きます。

  2. gcloud beta eventarc pipelines create コマンドを使用してパイプラインを作成します。

    gcloud beta eventarc pipelines create PIPELINE_NAME \
        --destinations=DESTINATION_KEY \
        --location=REGION

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

    • PIPELINE_NAME: パイプラインの ID または完全修飾名
    • DESTINATION_KEY: パイプラインの宛先を構成する 1 つ以上の Key-Value ペア

      次のキーのいずれか 1 つを設定する必要があります。

      次のキーを設定する必要があります。

      • network_attachment - プロデューサー VPC ネットワークがコンシューマー VPC ネットワークへの接続を開始できるようにするリソース。イベントを公開するために、Eventarc Advanced はネットワーク アタッチメントを使用して、VPC ネットワークでホストされているエンドポイントとの接続を確立します。

        ネットワーク アタッチメントを参照するPrivate Service Connect インターフェースからの接続を自動的に受け入れるネットワーク アタッチメントを作成できます。宛先リソースを含むネットワークとリージョンにネットワーク アタッチメントを作成します。

        DNS アドレス(Cloud Run、Pub/Sub、Workflows、または別の Eventarc Advanced バスなど)を使用して Google の宛先にメッセージを転送する場合は、ネットワーク アタッチメントで使用されるサブネットで限定公開の Google アクセスが有効になっていることを確認してください。そうしないと、DNS アドレスを解決できません。

      認証を有効にするには、次のキーの1 つを設定します。

      • google_oidc_authentication_service_account - トークンを自分で検証するエンドポイントなど、さまざまなシナリオで使用できる OIDC トークンの生成に使用されるサービス アカウントのメールアドレス。必要に応じて、google_oidc_authentication_audience を設定して、このトークンの対象となるオーディエンスを指定できます。通常、ターゲット パイプラインの URL と一致する必要があります。指定しない場合、リクエスト パラメータを含む URL 全体が使用されます。

        Cloud Run はリクエストごとに IAM チェックを実行します。run.routes.invoke 権限を使用して、次のいずれかの方法で Cloud Run サービスにアクセスできるユーザーを構成できます。

        • サービス アカウントまたはグループを選択して、サービスへのアクセスを許可する権限を付与します。すべてのリクエストには、いずれかの承認済みサービス アカウント用に Google によって署名された OpenID Connect トークンを含む HTTP 認証ヘッダーが必要です。

        • 未承認のアクセスを許可する allUsers に権限を付与します。

        詳細については、Cloud Run のアクセス制御 をご覧ください。

      • oauth_token_authentication_service_account - OAuth トークンの生成に使用されるサービス アカウントのメールアドレス。通常は、*.googleapis.com でホストされている Google API を呼び出す場合にのみ使用します。必要に応じて、oauth_token_authentication_scope を設定してこのトークンのスコープを指定できます。指定しない場合、デフォルトは https://www.googleapis.com/auth/cloud-platform になります。Google Cloud サービスの場合は、すべての Google Cloud APIs を含む https://www.googleapis.com/auth/cloud-platform スコープと、きめ細かいアクセス制御を提供する Identity and Access Management(IAM)を使用することをおすすめします。

        別の Eventarc Advanced バス、Pub/Sub、Workflows へのすべてのリクエストには、いずれかの承認済みサービス アカウント用に Google によって署名された OAuth トークンを含む HTTP 認証ヘッダーが必要です。

        詳しくは、トークンの種類をご覧ください。

      省略可: 次のキーの1 つを設定できます。

      • output_payload_format_avro_schema_definition
      • output_payload_format_json
      • output_payload_format_protobuf_schema_definition

        出力形式を設定する場合は、入力形式も指定する必要があります(次の input-payload-format-* フラグをご覧ください)。

      省略可: http_endpoint_uri が宛先キーとして使用されない場合は、次のキーを設定できます。

      • project - 宛先リソースの Google Cloud プロジェクト ID。デフォルトでは、パイプラインのプロジェクト ID が使用されます。
      • location - 宛先リソースのロケーション。デフォルトでは、パイプラインのロケーションが使用されます。
    • REGION: サポートされている Eventarc Advanced のロケーション

      または、gcloud CLI の location プロパティを設定することもできます。

      gcloud config set eventarc/location REGION
      

    省略可: 次のフラグを使用できます。

    • --async: 処理中のオペレーションの完了を待たずに、コマンドからすぐに戻ります。
    • --crypto-key: 顧客管理の暗号鍵の完全修飾名を指定します。指定しない場合、Google 管理の鍵が使用されます。
    • --logging-config: ロギング レベルを構成します。ロギング レベルは、NONEDEBUGINFONOTICEWARNINGERRORCRITICALALERTEMERGENCY のいずれかにする必要があります。
    • --mediations: 変換を適用します。サポートされているテンプレートは transformation_template のみで、パイプラインごとに 1 つのメディエーションのみがサポートされます。次に例を示します。

      --mediations=transformation_template='message.removeFields(["id\ ","credit_card_number","age"])'

      変換を適用する場合は、次のいずれかのフラグを使用して入力形式を指定する必要があります。

    • 入力形式を指定する次のいずれか。

      • --input-payload-format-avro-schema-definition
      • --input-payload-format-json
      • --input-payload-format-protobuf-schema-definition
    • --max-retry-attempts--max-retry-delay--min-retry-delay: イベントの再試行

    次に例を示します。

    gcloud beta eventarc pipelines create my-pipeline \
        --destinations=http_endpoint_uri='https://example-endpoint.com',network_attachment=my-network-attachment,oauth_token_authentication_service_account=example-service-account@example-project.gserviceaccount.iam.com,oauth_token_authentication_scope='https://www.googleapis.com/auth/cloud-platform',output_payload_format_avro_schema_definition='{"type": "record","name": "my_record", "fields": [{"name": "my_field", "type":"string"}]}' \
        --input-payload-format-avro-schema-definition='{"type":"record", "name": "my_record", "fields": [{"name": "my_field","type": "string"}]}' \
        --location=us-central1 \
        --async
    

    詳細と例については、gcloud CLI のドキュメントをご覧ください。

登録

  1. ターミナルを開きます。

  2. gcloud beta eventarc enrollments create コマンドを使用して登録を作成します。

    gcloud beta eventarc enrollments create ENROLLMENT_NAME \
        --cel-match=MATCH_EXPRESSION \
        --destination-pipeline=PIPELINE_NAME \
        --message-bus=BUS_NAME \
        --message-bus-project=PROJECT_ID \
        --location=REGION

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

    • ENROLLMENT_NAME: 登録の ID または完全修飾名
    • MATCH_EXPRESSION: CEL を使用したこの登録のマッチング式(例: "message.type == 'google.cloud.dataflow.job.v1beta3.statusChanged'")。
    • PIPELINE_NAME: ターゲット パイプラインの ID またはこの登録の完全修飾名
    • BUS_NAME: Eventarc Advanced バスの ID または完全修飾名
    • PROJECT_ID: バスの Google Cloud プロジェクト ID
    • REGION: サポートされている Eventarc Advanced のロケーション

      または、gcloud CLI の location プロパティを設定することもできます。

      gcloud config set eventarc/location REGION
      

    省略可: 次のフラグを使用できます。

    • --async: 処理中のオペレーションの完了を待たずに、コマンドからすぐに戻ります。

    次に例を示します。

    gcloud beta eventarc enrollments create my-enrollment \
        --cel-match="message.type == 'google.cloud.dataflow.job.v1beta3.statusChanged'" \
        --destination-pipeline=my-pipeline \
        --message-bus=my-message-bus \
        --message-bus-project=another-google-cloud-project \
        --location=us-central1 \
        --async
    

登録を削除する

登録は、Google Cloud コンソールまたは Google Cloud CLI を使用して削除できます。

Console

  1. 登録を削除するには、Google Cloud コンソールで [Eventarc] > [パイプライン] ページに移動します。

    [Pipelines] に移動

  2. 登録を削除するパイプラインの名前をクリックします。

    [パイプラインの詳細] ペインが開きます。

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

    [登録] ペインが開きます。

  4. 削除する登録の 削除アイコンをクリックします。

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

gcloud

  1. ターミナルを開きます。

  2. gcloud beta eventarc enrollments delete コマンドを使用して登録を削除します。

    gcloud beta eventarc enrollments delete ENROLLMENT_NAME \
          --location=REGION

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

パイプラインを削除する

パイプラインは、Google Cloud コンソールまたは Google Cloud CLI を使用して削除できます。

パイプラインの削除には 10 分以上かかる場合があります。

Console

  1. パイプラインを削除するには、Google Cloud コンソールで [Eventarc] > [パイプライン] ページに移動します。

    [Pipelines] に移動

  2. パイプラインのリストで、削除するパイプラインの名前の横にあるチェックボックスをオンにします。

  3. [削除] をクリックします。

  4. Delete」と入力して削除を確定します。

  5. [削除] をクリックします。

gcloud

  1. ターミナルを開きます。

  2. gcloud beta eventarc pipelines delete コマンドを使用してパイプラインを削除します。

    gcloud beta eventarc pipelines delete PIPELINE_NAME \
          --location=REGION

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

次のステップ