Eventarc トリガーは、特定のイベントまたは一連のイベントに関心があることを宣言します。イベント ルーティングを構成するには、トリガーのフィルタ(イベントソースとターゲット Cloud Run サービスを含む)を指定します。
Eventarc は、HTTP リクエストを使用して、イベントを CloudEvents 形式でイベント レシーバーに配信します。
以下では、Firebase Alerts 直接イベントによってトリガーされる Cloud Run サービスへのイベント ルーティングを構成する方法について説明します。詳細については、サポートされている直接イベントのリストをご覧ください。
トリガーを作成する準備
トリガーを作成する前に、次の前提条件を満たす必要があります。
コンソール
Google Cloud コンソールの [プロジェクト セレクタ] ページで、プロジェクトを選択または作成します。 Google Cloud
Cloud Logging、Eventarc、Eventarc Publishing API を有効にします。
該当する場合は、ダイレクト イベントに関連する API を有効にします。たとえば、 Firebase Alerts イベントの場合はFirebase Alerts 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 Alerts イベントの場合は
firestore.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 Alerts」を選択します。
関連する Google Cloud のドキュメントでは、イベント プロバイダ名の前に Cloud またはGoogle Cloudが付いていない場合があります。たとえば、Memorystore for Redis はコンソールで Google Cloud Memorystore for Redis と表示されます。
- [イベントタイプ] リストで、直接イベントからイベントタイプを選択します。
- イベント ペイロードのエンコードを指定するには、[イベントデータのコンテンツ タイプ] リストで application/json または application/protobuf を選択します。
JSON 形式のイベント ペイロードは、Protobuf 形式のイベント ペイロードよりも大きくなります。イベントの宛先とイベントサイズの制限によっては、信頼性に影響する可能性があります。詳細については、既知の問題をご覧ください。
- [リージョン] リストで、[global (グローバル)] を選択します。
詳細については、Eventarc のロケーションをご覧ください。
- [属性 1] フィールドでは、alerttype リソース ID がイベント フィルタとして機能します。このフィルタの演算子を選択します。
- 等しい
- パスパターン
詳細については、パスパターンについてをご覧ください。
- [属性の値 1] フィールドで、次のいずれかを選択します。
appDistribution.inAppFeedback
: テスターが特定のアプリのアプリ内フィードバックを送信すると、イベントが送信されます。appDistribution.newTesterIosDevice
: 特定のアプリに新しい iOS テスター デバイスが登録されるとイベントが送信されます。billing.planAutomatedUpdate
: Firebase プロジェクトの料金プランが自動的に更新されると、イベントが送信されます。たとえば、支払いに関する問題でプランがダウングレードされた場合などです。billing.planUpdate
: ユーザーが Firebase プロジェクトの料金プランを変更すると、イベントが送信されます。たとえば、プロジェクトで請求先アカウントの適用または解除が行われた場合などです。crashlytics.missingSymbolFile
: 受信クラッシュ レポートをシンボリケートするための適切なデバッグ シンボルがないと Firebase Crashlytics が判断したときにイベントが送信されます。crashlytics.newAnrIssue
: アプリで新しいアプリケーション応答なし(ANR)エラーが発生した場合にイベントが送信されます(後続の同一のイベントでは送信されません)。crashlytics.newFatalIssue
: アプリで新しい致命的なクラッシュが発生したとき送信されます(後続の同じイベントに対しては送信されません)。crashlytics.newNonfatalIssue
: アプリで新しい非致命的なエラーが発生するとイベントが送信されます(後続の同じイベントでは送信されません)。crashlytics.regression
: 以前のアプリのバージョンで解決とマークされた問題でクラッシュが発生するとイベントが送信されます。crashlytics.stabilityDigest
: Crashlytics でトレンドになっている問題の通知があると、イベントが送信されます。crashlytics.velocity
: 1 つの問題が原因で多数のアプリ セッションがクラッシュしたときにイベントが送信されます。performance.threshold
: 指標のパフォーマンスが、設定されたしきい値を超えた時点でイベントが送信されます。
- 必要に応じて、特定の Firebase アプリ ID でイベントをフィルタできます。[addフィルタを追加] をクリックして、appid を指定します。
- サービスまたはワークフローを呼び出すサービス アカウントを選択します。
新しいサービス アカウントを作成することもできます。
これにより、トリガーに関連付けられた 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.firebasealerts.alerts.v1.published" \ --event-filters="alerttype=ALERT_TYPE" \ --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 サービスがあるリージョン。指定しない場合、サービスはトリガーと同じリージョンにあるとみなされます。
ALERT_TYPE
: Firebase アラートのタイプ。次のいずれかの値になります。appDistribution.inAppFeedback
: テスターが特定のアプリのアプリ内フィードバックを送信すると、イベントが送信されます。appDistribution.newTesterIosDevice
: 特定のアプリに新しい iOS テスター デバイスが登録されるとイベントが送信されます。billing.planAutomatedUpdate
: Firebase プロジェクトの料金プランが自動的に更新されると、イベントが送信されます。たとえば、支払いに関する問題でプランがダウングレードされた場合などです。billing.planUpdate
: ユーザーが Firebase プロジェクトの料金プランを変更すると、イベントが送信されます。たとえば、プロジェクトで請求先アカウントの適用または解除が行われた場合などです。crashlytics.missingSymbolFile
: 受信クラッシュ レポートをシンボリケートするための適切なデバッグ シンボルがないと Firebase Crashlytics が判断したときにイベントが送信されます。crashlytics.newAnrIssue
: アプリで新しいアプリケーション応答なし(ANR)エラーが発生した場合にイベントが送信されます(後続の同一のイベントでは送信されません)。crashlytics.newFatalIssue
: アプリで新しい致命的なクラッシュが発生したとき送信されます(後続の同じイベントに対しては送信されません)。crashlytics.newNonfatalIssue
: アプリで新しい非致命的なエラーが発生するとイベントが送信されます(後続の同じイベントでは送信されません)。crashlytics.regression
: 以前のアプリのバージョンで解決とマークされた問題でクラッシュが発生するとイベントが送信されます。crashlytics.stabilityDigest
: Crashlytics でトレンドになっている問題の通知があると、イベントが送信されます。crashlytics.velocity
: 1 つの問題が原因で多数のアプリ セッションがクラッシュしたときにイベントが送信されます。performance.threshold
: 指標のパフォーマンスが、設定されたしきい値を超えた時点でイベントが送信されます。
ALERT_TYPE
の演算子は次のいずれかにする必要があります。- 等しい。例:
--event-filters="alerttype=appDistribution.inAppFeedback"
- パスパターン。例:
--event-filters-path-pattern="alerttype=appDistribution.*"
、--event-filters-path-pattern="alerttype=crashlytics.new*"
詳細については、パスパターンについてをご覧ください。
-
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="type=google.firebase.firebasealerts.alerts.v1.published"
--event-filters="alerttype=ALERT_TYPE"
または--event-filters-path-pattern="alerttype=ALERT_TYPE"
必要に応じて、
--event-filters="appid=APP_ID"
フラグを使用して完全一致を指定することで、特定の Firebase アプリ ID のイベントをフィルタできます。
- トリガーの作成後に、イベント フィルタのタイプを変更することはできません。別のイベントタイプには、新しいトリガーを作成する必要があります。
--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.firebasealerts.alerts.v1.published" \ --event-filters="alerttype=crashlytics.velocity" \ --service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
このコマンドは、google.firebase.firebasealerts.alerts.v1.published
として識別されるイベントと crashlytics.velocity
アラートタイプに対して helloworld-trigger
というトリガーを作成します。
Terraform
Terraform を使用して、Cloud Run の宛先のトリガーを作成できます。詳細については、Terraform を使用してトリガーを作成するをご覧ください。
トリガーを一覧表示する
トリガーの作成を確認するには、Google Cloud CLI または Google Cloud コンソールを使用して Eventarc トリガーを一覧表示します。
コンソール
Google Cloud コンソールで、[Eventarc] の [トリガー] ページに移動します。
このページには、すべてのロケーションのトリガーが一覧表示されます。また、名前、リージョン、イベント プロバイダ、宛先などの詳細情報も表示されます。
トリガーをフィルタするには:
- [ フィルタ] フィールドまたは [トリガーをフィルタリング] フィールドをクリックします。
- [プロパティ] リストで、トリガーをフィルタするオプションを選択します。
1 つのプロパティを選択することも、論理演算子
OR
を使用して複数のプロパティを追加することもできます。トリガーを並べ替えるには、サポートされている列見出しの横にある [
並べ替え] をクリックします。
gcloud
次のコマンドを実行してトリガーを一覧取得します。
gcloud eventarc triggers list --location=-
すべてのロケーションのトリガーが一覧表示されます。名前、タイプ、宛先、ステータスなどの詳細情報も表示されます。