Eventarc トリガーは、特定のイベントまたは一連のイベントに関心があることを宣言します。イベント ルーティングを構成するには、トリガーのフィルタ(イベントソースとターゲット Cloud Run サービスを含む)を指定します。
Eventarc は、HTTP リクエストを使用して、イベントを CloudEvents 形式でイベント レシーバーに配信します。
以下では、Firebase Test Lab 直接イベントによってトリガーされる Cloud Run サービスへのイベント ルーティングを構成する方法について説明します。詳細については、サポートされている直接イベントのリストをご覧ください。
トリガーを作成する準備
トリガーを作成する前に、次の前提条件を満たす必要があります。
コンソール
Google Cloud コンソールの [プロジェクト セレクタ] ページで、プロジェクトを選択または作成します。 Google Cloud
Cloud Logging、Eventarc、Eventarc Publishing API を有効にします。
該当する場合は、ダイレクト イベントに関連する API を有効にします。たとえば、 Firebase Test Lab イベントの場合はFirebase Test Lab API を有効にします。
アカウントがない場合は、ユーザー管理のサービス アカウントを作成し、Eventarc がターゲット サービスのイベントを管理できるように、必要なロールと権限を付与します。
Google Cloud コンソールで [サービス アカウントの作成] ページに移動します。
プロジェクトを選択します。
[サービス アカウント名] フィールドに名前を入力します。Google Cloud コンソールでは、この名前に基づいて [サービス アカウント ID] フィールドの値が設定されます。
[サービス アカウントの説明] フィールドに説明を入力します。例:
Service account for event trigger
[作成して続行] をクリックします。
適切なアクセス権を付与するには、[ロールを選択] リストで、認証された呼び出しまたは未認証の呼び出しのためにサービス アカウントに付与する必要がある Identity and Access Management(IAM)ロールを選択します。詳細については、Cloud Run ターゲットのロールと権限をご覧ください。
ロールを追加するには、[
別のロールを追加] をクリックして各ロールを追加します。[続行] をクリックします。
アカウントの作成を完了するには、[完了] をクリックします。
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Cloud Logging、Eventarc、Eventarc Publishing API を有効にします。
gcloud services enable logging.googleapis.com \ eventarc.googleapis.com \ eventarcpublishing.googleapis.com
該当する場合は、直接イベントに関連する API を有効にします。たとえば、 Firebase Test Lab イベントの場合は
testing.googleapis.com
を有効にします。アカウントがない場合は、ユーザー管理のサービス アカウントを作成し、Eventarc がターゲット サービスのイベントを管理できるように、必要なロールと権限を付与します。
サービス アカウントを作成します。
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
SERVICE_ACCOUNT_NAME
は、サービス アカウントの名前に置き換えます。6~30 文字にする必要があり、小文字の英数字とダッシュを使用できます。作成したサービス アカウントの名前は変更できません。認証済み呼び出しまたは未認証の呼び出しのために必要な Identity and Access Management(IAM)のロールまたは権限を付与します。詳細については、Cloud Run ターゲットのロールと権限をご覧ください。
トリガーを作成する
Eventarc トリガーは、Google Cloud CLI または Google Cloud コンソールを使用して作成できます。
コンソール
- Google Cloud コンソールで、[Eventarc] の [トリガー] ページに移動します。
- [ トリガーを作成] をクリックします。
- トリガー名を入力します。
これはトリガーの ID で、先頭は英字にする必要があります。63 文字以下とし、小文字、数字、ハイフンを使用できます。
- [トリガーのタイプ] で、[Google のソース] を選択します。
- [イベント プロバイダ] リストで「Firebase Test Lab」を選択します。
関連する Google Cloud のドキュメントでは、イベント プロバイダ名の前に Cloud またはGoogle Cloudが付いていない場合があります。たとえば、Memorystore for Redis はコンソールで Google Cloud Memorystore for Redis と表示されます。
- [イベントタイプ] リストで、直接イベントからイベントタイプを選択します。
- イベント ペイロードのエンコードを指定するには、[イベントデータのコンテンツ タイプ] リストで application/json または application/protobuf を選択します。
JSON 形式のイベント ペイロードは、Protobuf 形式のイベント ペイロードよりも大きくなります。イベントの宛先とイベントサイズの制限によっては、信頼性に影響する可能性があります。詳細については、既知の問題をご覧ください。
- [リージョン] リストで、[global (グローバル)] を選択します。
詳細については、Eventarc のロケーションをご覧ください。
- サービスまたはワークフローを呼び出すサービス アカウントを選択します。
新しいサービス アカウントを作成することもできます。
これにより、トリガーに関連付けられた Identity and Access Management(IAM)サービス アカウントのメールアドレスが設定されます。このメールアドレスには、Eventarc が必要とする特定のロールがすでに付与されています。
- [イベントの宛先] リストで、[Cloud Run] を選択します。
- サービスを選択します。
これは、トリガーのイベントを受信するサービスの名前です。サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(
/
)に送信された HTTP POST リクエストとしてイベントを受信します。 - 必要に応じて、受信リクエストの送信先であるサービスの URL パスを指定できます。
これは、トリガーのイベントの送信先である宛先サービスの相対パスです。例:
/
、/route
、route
、route/subroute
- 必要に応じて、ラベルを追加するには、ラベルとはをご覧ください。 [ラベルを追加] をクリックします。ラベルは、Google Cloud リソースの整理に役立つ Key-Value ペアです。詳細については、
- [作成] をクリックします。
トリガーの作成後は、イベントソースのフィルタを変更できません。代わりに、新しいトリガーを作成して古いトリガーを削除します。詳しくは、トリガーの管理をご覧ください。
gcloud
トリガーを作成するには、必須フラグとオプションのフラグを指定して gcloud eventarc triggers create
コマンドを実行します。
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" \ --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"
次のように置き換えます。
TRIGGER
: トリガーの ID または完全修飾識別子。-
DESTINATION_RUN_SERVICE
: トリガーのイベントを受け取る Cloud Run サービスの名前。サービスは、Cloud Run でサポートされているどのロケーションにも配置できます。トリガーと同じロケーションに配置する必要はありません。ただし、サービスはトリガーと同じプロジェクトに配置する必要があり、イベントが生成されるたびに、ルート URL パス(/
)に送信された HTTP POST リクエストとしてイベントを受信します。 -
DESTINATION_RUN_REGION
: (省略可)宛先の Cloud Run サービスがあるリージョン。指定しない場合、サービスはトリガーと同じリージョンにあるとみなされます。 -
EVENT_DATA_CONTENT_TYPE
:(省略可)イベント ペイロードのエンコード。値はapplication/json
またはapplication/protobuf
です。デフォルトのエンコードはapplication/json
です。JSON 形式のイベント ペイロードは、Protobuf 形式のイベント ペイロードよりも大きくなります。イベントの宛先とイベントサイズの制限によっては、信頼性に影響する可能性があります。詳細については、既知の問題をご覧ください。
SERVICE_ACCOUNT_NAME
: ユーザー管理のサービス アカウントの名前。PROJECT_ID
: 実際の Google Cloud プロジェクト ID。
注:
--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=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
このコマンドは、google.firebase.testlab.testMatrix.v1.completed
として識別されるイベントに helloworld-trigger
というトリガーを作成します。
Terraform
Terraform を使用して、Cloud Run の宛先のトリガーを作成できます。詳細については、Terraform を使用してトリガーを作成するをご覧ください。
トリガーを一覧表示する
トリガーの作成を確認するには、Google Cloud CLI または Google Cloud コンソールを使用して Eventarc トリガーを一覧表示します。
コンソール
Google Cloud コンソールで、[Eventarc] の [トリガー] ページに移動します。
このページには、すべてのロケーションのトリガーが一覧表示されます。また、名前、リージョン、イベント プロバイダ、宛先などの詳細情報も表示されます。
トリガーをフィルタするには:
- [ フィルタ] フィールドまたは [トリガーをフィルタリング] フィールドをクリックします。
- [プロパティ] リストで、トリガーをフィルタするオプションを選択します。
1 つのプロパティを選択することも、論理演算子
OR
を使用して複数のプロパティを追加することもできます。トリガーを並べ替えるには、サポートされている列見出しの横にある [
並べ替え] をクリックします。
gcloud
次のコマンドを実行してトリガーを一覧取得します。
gcloud eventarc triggers list --location=-
すべてのロケーションのトリガーが一覧表示されます。名前、タイプ、宛先、ステータスなどの詳細情報も表示されます。