Eventarc トリガーは、特定のイベントまたは一連のイベントに関心があることを宣言します。イベント ルーティングを構成するには、トリガーのフィルタ(イベントソースとターゲット ワークフローを含む)を指定します。
イベントは、HTTP リクエストを介して CloudEvents 形式で配信されます。Workflows サービスは、CloudEvents 仕様に従ってイベントを JSON オブジェクトに変換し、ワークフロー ランタイム引数としてワークフロー実行に渡します。イベントサイズが 512 KB を超えていないことを確認してください。Workflows の引数サイズの上限を超えるイベントはワークフローの実行をトリガーしません。
以下では、Firebase Test Lab 直接イベントに応答してワークフローの実行がトリガーされるように、イベント ルーティングを構成する方法について説明します。詳細については、サポートされている直接イベントのリストをご覧ください。 TestMatrix が完了すると、イベントに応答してサービスに対するリクエストがトリガーされます。トリガーを作成する準備
ターゲット ワークフローの Eventarc トリガーを作成する前に、次の作業を完了します。
コンソール
Google Cloud コンソールの [プロジェクト セレクタ] ページで、プロジェクトを選択または作成します。 Google Cloud
Eventarc API、Eventarc Publishing API、Workflows API、Workflow Executions 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)ロールを選択します。詳細については、Workflows ターゲットのロールと権限をご覧ください。
ロールを追加するには、[
別のロールを追加] をクリックして各ロールを追加します。[続行] をクリックします。
アカウントの作成を完了するには、[完了] をクリックします。
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.
Eventarc API、Eventarc Publishing API、Workflows API、Workflow Executions API を有効にします。
gcloud services enable eventarc.googleapis.com \ eventarcpublishing.googleapis.com \ workflows.googleapis.com \ workflowexecutions.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)のロールまたは権限を付与します。詳細については、Workflows ターゲットのロールと権限をご覧ください。
トリガーを作成する
イベント レシーバとしてデプロイされたワークフローに Eventarc トリガーを作成するには、Google Cloud CLI(gcloud
または Terraform)を使用するか、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 が必要とする特定のロールがすでに付与されています。
- [イベントの宛先] リストで、[Workflows] を選択します。
- ワークフローを選択します。
これは、イベントを渡すワークフローの名前です。ワークフロー実行用のイベントは、変換されてランタイム引数としてワークフローに渡されます。
詳細については、 Workflows のトリガーを作成するをご覧ください。
- 必要に応じて、ラベルを追加するには、ラベルとはをご覧ください。 [ラベルを追加] をクリックします。ラベルは、Google Cloud リソースの整理に役立つ Key-Value ペアです。詳細については、
- [作成] をクリックします。
トリガーの作成後は、イベントソースのフィルタを変更できません。代わりに、新しいトリガーを作成して古いトリガーを削除します。詳しくは、トリガーの管理をご覧ください。
gcloud
gcloud eventarc triggers create TRIGGER \ --location=global \ --destination-workflow=DESTINATION_WORKFLOW \ --destination-workflow-location=DESTINATION_WORKFLOW_LOCATION \ --event-filters="type=google.firebase.testlab.testMatrix.v1.completed" \ --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \ --service-account="MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com"
次のように置き換えます。
TRIGGER
: トリガーの ID または完全修飾識別子。-
DESTINATION_WORKFLOW
: トリガーからイベントを受け取る、デプロイ済みワークフローの ID。ワークフローは、Workflows でサポートされている任意のロケーションに配置できます。トリガーと同じロケーションに存在する必要はありません。ただし、ワークフローはトリガーと同じプロジェクトに存在する必要があります。 -
DESTINATION_WORKFLOW_LOCATION
(省略可): 宛先ワークフローがデプロイされるロケーション。指定しない場合、ワークフローはトリガーと同じロケーションにあるとみなされます。 -
EVENT_DATA_CONTENT_TYPE
:(省略可)イベント ペイロードのエンコード。値はapplication/json
またはapplication/protobuf
です。デフォルトのエンコードはapplication/json
です。JSON 形式のイベント ペイロードは、Protobuf 形式のイベント ペイロードよりも大きくなります。イベントの宛先とイベントサイズの制限によっては、信頼性に影響する可能性があります。詳細については、既知の問題をご覧ください。
SERVICE_ACCOUNT_NAME
: Workflows で必要な特定のロールを付与した IAM サービス アカウントの名前。-
PROJECT_ID
: プロジェクト ID Google Cloud
注:
--location
フラグはglobal
にする必要があります。詳細については、Eventarc のロケーションをご覧ください。--event-filters
フラグは必須で、タイプをgoogle.firebase.testlab.testMatrix.v1.completed
にする必要があります。TestMatrix が完了するとイベントが送信されます。- トリガーの作成後に、イベント フィルタのタイプを変更することはできません。別のイベントタイプには、新しいトリガーを作成する必要があります。
-
--service-account
: Eventarc トリガーがワークフロー実行の呼び出しに使用する IAM サービス アカウントのメールアドレス。必要なリソースにアクセスするために必要な最小権限を持つサービス アカウントを使用することを強くおすすめします。サービス アカウントの詳細については、サービス アカウントの作成と管理をご覧ください。 - デフォルトでは、Eventarc 用に作成された Pub/Sub サブスクリプションはアクティビティに関係なく保持され、期限切れになりません。非アクティブ期間を変更するには、サブスクリプションのプロパティをご覧ください。
例:
gcloud eventarc triggers create tl-workflows-trigger \ --location=global \ --destination-workflow=my-workflow \ --destination-workflow-location=europe-west4 \ --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
として識別されるイベントに tl-workflows-trigger
というトリガーを作成します。
Terraform
Terraform を使用して、ワークフローのトリガーを作成できます。詳細については、Eventarc と Terraform を使用してワークフローをトリガーするをご覧ください。
トリガーを一覧表示する
トリガーの作成を確認するには、Google Cloud CLI または Google Cloud コンソールを使用して Eventarc トリガーを一覧表示します。
コンソール
Google Cloud コンソールで、[Eventarc] の [トリガー] ページに移動します。
このページには、すべてのロケーションのトリガーが一覧表示されます。また、名前、リージョン、イベント プロバイダ、宛先などの詳細情報も表示されます。
トリガーをフィルタするには:
- [ フィルタ] フィールドまたは [トリガーをフィルタリング] フィールドをクリックします。
- [プロパティ] リストで、トリガーをフィルタするオプションを選択します。
1 つのプロパティを選択することも、論理演算子
OR
を使用して複数のプロパティを追加することもできます。トリガーを並べ替えるには、サポートされている列見出しの横にある [
並べ替え] をクリックします。
gcloud
次のコマンドを実行してトリガーを一覧取得します。
gcloud eventarc triggers list --location=-
すべてのロケーションのトリガーが一覧表示されます。名前、タイプ、宛先、ステータスなどの詳細情報も表示されます。