GoogleApiSource リソースを作成することで、特定の Eventarc Advanced バスに対して Google ソースからのイベントの収集と公開を有効にできます。
Google ソースからのイベントは、Cloud Run 関数の作成や Dataflow ジョブのステータス変更などの仲介なしのイベントによって直接トリガーされます。詳細については、Eventarc でサポートされている Google イベントタイプをご覧ください。
次の点にご注意ください。
- デフォルトでは、イベントは
GoogleApiSourceリソースが存在する Google Cloud プロジェクトから収集されます。gcloud CLI を使用して、GoogleApiSourceリソースと同じ組織内の複数のプロジェクトからイベントを収集することもできます。詳細については、このドキュメントの複数のプロジェクトからイベントをパブリッシュするをご覧ください。 GoogleApiSourceリソースが存在するプロジェクトとは異なる Google Cloud プロジェクトにあるバスにイベントを公開できます。これは、gcloud CLI を使用するか、Eventarc API にリクエストを送信することで構成できます( Google Cloud コンソールからは構成できません)。- リージョンごとにプロジェクトあたり 1 つの
GoogleApiSourceリソースという上限があります。 Google Cloud
始める前に
作業を始める前に、次の手順を完了していることを確認してください。
Google Cloud CLI を使用してこのページのコマンドを実行する場合は、gcloud CLI をインストールして初期化します。すでに gcloud CLI をインストールしている場合は、
gcloud components updateを実行して最新バージョンを取得します。Eventarc API と Eventarc Publishing API を有効にします。
コンソール
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable eventarc.googleapis.com
eventarcpublishing.googleapis.com
Google ソースからのイベントを有効にする
Google ソースからイベントを公開するには、GoogleApiSource リソースを作成する必要があります。このリソースは、特定の Eventarc Advanced バスの特定の Google Cloud プロジェクトにおける Google API イベントのサブスクリプションを表します。
Google ソースからのイベントのパブリッシュは、次の方法で有効にできます。
- Google Cloud コンソールで
- ターミナルまたは Cloud Shell で Google Cloud CLI を使用する
Eventarc API にリクエストを送信する
コンソール
gcloud
ターミナルを開きます。
Google ソースからのイベントを有効にするには、
gcloud eventarc google-api-sources createコマンドを使用します。gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \ --destination-message-bus=BUS_NAME \ --destination-message-bus-project=BUS_PROJECT_ID
次のように置き換えます。
GOOGLE_API_SOURCE_NAME: 特定のバスの Google API イベントのサブスクリプションを表すGoogleApiSourceリソースの ID または完全修飾識別子BUS_NAME: Google API イベントのサブスクライブ対象となるバスの ID または完全修飾 IDBUS_PROJECT_ID: バスの Google Cloud プロジェクト ID
省略可: 次のフラグも使用できます。
--async: 処理中のオペレーションの完了を待たずに、直ちにコマンドを終了します。--crypto-key: 顧客管理の暗号鍵の完全修飾名を指定します。指定しない場合は、 Google-owned and managed keys が使用されます。--logging-config: ロギングレベルを構成します。次のいずれかの値を指定する必要があります。NONE、DEBUG、INFO、NOTICE、WARNING、ERROR、CRITICAL、ALERT、EMERGENCY。詳細については、LogSeverityをご覧ください。
REST API
Google ソースからのイベントを有効にするには、projects.locations.googleApiSources.create メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
GOOGLE_API_SOURCE_NAME: 特定のバスの Google API イベントのサブスクリプションを表すGoogleApiSourceリソースの表示名(例:my_google_source)。LABEL_KEY、LABEL_VALUE: 省略可。 Google Cloud リソースの整理に役立つラベルの Key-Value ペアのマップです。詳細については、ラベルとはをご覧ください。ANNOTATION_KEY、ANNOTATION_VALUE: 省略可。自由形式のテキストのアノテーション キーと値のペアのマップ。これらを使用して、リソースに関連付けられた任意の情報を付加できます。詳細については、アノテーションをご覧ください。DESTINATION: Google ソースイベントの公開先となる Eventarc Advanced バスの完全修飾識別子。形式はprojects/PROJECT_NAME/locations/LOCATION/messageBuses/BUS_NAMEです。詳細については、メッセージをルーティングするバスを作成するをご覧ください。ENCRYPT_KEY: 省略可。GoogleApiSourceリソースがprojects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME形式のデータ暗号化に使用する Cloud KMS 鍵。詳細については、顧客管理の暗号鍵の使用をご覧ください。PROJECT_ID:GoogleApiSourceリソースを作成する Google Cloudプロジェクト ID。LOCATION:GoogleApiSourceリソースを作成するサポートされているリージョン(例:us-central1)。LOG_SEVERITY: 省略可。ログエントリに記載されているイベントの最小重大度。NONE、DEBUG、INFO、NOTICE、WARNING、ERROR、CRITICAL、ALERT、EMERGENCYのいずれか。デフォルトはNONEです。詳細については、LogSeverityをご覧ください。
リクエストの本文(JSON):
{
"displayName": "GOOGLE_API_SOURCE_NAME",
"labels": {"LABEL_KEY":"LABEL_VALUE"},
"annotations": {"ANNOTATION_KEY":"ANNOTATION_VALUE"},
"destination": "DESTINATION",
"cryptoKeyName": "ENCRYPT_KEY",
"loggingConfig": {"logSeverity":"LOG_SEVERITY"}
}
リクエストを送信するには、次のいずれかのオプションを展開します。
成功した場合、レスポンスの本文には、新しく作成された Operation のインスタンスが含まれます。
{
"name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
"createTime": "2024-01-25T17:17:45.782370139Z",
"target": "projects/PROJECT_ID/locations/LOCATION/googleApiSources/GOOGLE_API_SOURCE_NAME",
"verb": "create",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
GoogleApiSource リソースと同じ Google Cloud プロジェクト内の Google ソースからのイベントが収集され、バスに公開されるようになりました。
Google ソースからのイベントを無効にする
特定のGoogle Cloud プロジェクトの Google ソースから Eventarc Advanced バスへのイベントのパブリッシュを無効にするには、GoogleApiSource リソースを削除する必要があります。
Google ソースからのイベントのパブリッシュは、次の方法で無効にできます。
- Google Cloud コンソールで
- ターミナルまたは Cloud Shell で gcloud CLI を使用する
Eventarc API にリクエストを送信する
コンソール
Google Cloud コンソールで、[Eventarc] > [バスの詳細] ページに移動します。
[ 編集] をクリックします。
[バスの編集] ページで、Google API メッセージ プロバイダを削除するには、google-api-source メッセージ ソース(または指定した名前)の [リソースの削除] をクリックします。
[リソースの削除] プロンプトで、[確認] をクリックします。
[保存] をクリックします。
gcloud
ターミナルを開きます。
Google ソースからのイベントを無効にするには、
gcloud eventarc google-api-sources deleteコマンドを使用します。gcloud eventarc google-api-sources delete GOOGLE_API_SOURCE_NAME \ --location=REGION
次のように置き換えます。
GOOGLE_API_SOURCE_NAME:GoogleApiSourceリソースの ID または完全修飾識別子REGION:GoogleApiSourceリソースのロケーション
REST API
Google ソースからのイベントを無効にするには、projects.locations.googleApiSources.delete メソッドを使用します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID:GoogleApiSourceリソースが作成される Google Cloud プロジェクト ID。LOCATION:GoogleApiSourceリソースが作成されるリージョン(例:us-central1)。GOOGLE_API_SOURCE_NAME: 削除するGoogleApiSourceリソースの名前。
リクエストを送信するには、次のいずれかのオプションを展開します。
成功した場合、レスポンスの本文には、新しく作成された Operation のインスタンスが含まれます。
{
"name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
"createTime": "2024-01-25T17:17:45.782370139Z",
"target": "projects/PROJECT_ID/locations/LOCATION/googleApiSources/GOOGLE_API_SOURCE_NAME",
"verb": "delete",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
削除された GoogleApiSource リソースと同じ Google Cloud プロジェクト内の Google ソースからのイベントは、収集および公開されなくなります。
複数のプロジェクトからイベントをパブリッシュする
複数の Google Cloud プロジェクトから Google ソースイベントを収集して公開するには、GoogleApiSource リソースを作成する必要があります。また、プロジェクトは GoogleApiSource リソースと同じ組織に属している必要があります。組織の詳細については、リソース階層をご覧ください。
次の点にご注意ください。
- 複数のプロジェクトからのイベント パブリッシュは、gcloud CLI を使用して構成する必要があります。 Google Cloud コンソールには表示されません。
GoogleApiSourceリソースを含むプロジェクトが別の組織に移動されると、複数のプロジェクトからのイベントのパブリッシュが想定どおりに機能しなくなります。GoogleApiSourceリソースを更新または再作成する必要があります。
1. Eventarc サービス エージェントに適切な IAM ロールを付与する
組織レベルでイベントを収集するには、gcloud organizations add-iam-policy-binding コマンドを使用して、Eventarc サービス エージェントに適切な Identity and Access Management(IAM)ロールを付与します。
gcloud organizations add-iam-policy-binding ORGANIZATION_ID \ --member="SERVICE_AGENT_EMAIL" \ --role="roles/eventarc.multiProjectEventCollector"
次のように置き換えます。
ORGANIZATION_ID: 組織リソース ID。SERVICE_AGENT_EMAIL:GoogleApiSourceリソースを作成するプロジェクトの Eventarc プライマリ サービス エージェントのメールアドレス。メールアドレスは次の形式です。service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.comPROJECT_NUMBERは、使用するGoogle Cloud プロジェクト番号に置き換えます。プロジェクト番号は、 Google Cloud コンソールの [ようこそ] ページで確認できます。また、次のコマンドでも確認できます。gcloud projects describe PROJECT_ID --format='value(projectNumber)'
2. すべてのプロジェクトまたはプロジェクトのリストから公開する
複数のプロジェクトで Google ソースからイベントをパブリッシュするには、次のいずれかの方法で gcloud eventarc google-api-sources create コマンドを使用します。
GoogleApiSourceリソースと同じ組織内のすべての Google Cloud プロジェクトから公開します。gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \ --location=REGION \ --destination-message-bus=BUS_NAME \ --destination-message-bus-project=BUS_PROJECT_ID \ --organization-subscription
GoogleApiSourceリソースと同じ組織内の Google Cloud プロジェクトのリストから公開します。gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \ --location=REGION \ --destination-message-bus=BUS_NAME \ --destination-message-bus-project=BUS_PROJECT_ID \ --project-subscriptions=LIST_OF_PROJECTS
次のように置き換えます。
GOOGLE_API_SOURCE_NAME:GoogleApiSourceリソースの ID または完全修飾識別子REGION:GoogleApiSourceリソースのロケーションBUS_NAME: Google API イベントのサブスクライブ対象となるバスの ID または完全修飾 IDBUS_PROJECT_ID: バスの Google Cloud プロジェクト IDLIST_OF_PROJECTS:Google Cloud プロジェクト ID またはプロジェクト番号のカンマ区切りリスト。同じリスト内で ID と数字を組み合わせることができます。GoogleApiSourceリソースを含むGoogle Cloud プロジェクトからイベントをパブリッシュするには、リストにプロジェクト ID または番号を明示的に含める必要があります。