このドキュメントでは、Dataflow ジョブの状態変化によってトリガーされるイベント ドリブン ワークフローを作成する方法について説明します。
たとえば、次のようなワークフローが考えられます。
- 重要なジョブが失敗した場合は、オンコール エンジニアにアラートを送信する。
- バッチジョブが完了したときにユーザーに通知するか、別の Dataflow ジョブを開始する。
- ジョブで使用されるリソース(Cloud Storage バケットなど)をクリーンアップする。
概要
Eventarc は、他のサービスからのイベントをリッスンし、さまざまな宛先にルーティングできる Google Cloud サービスです。
Dataflow ジョブを実行すると、ジョブは JOB_STATE_QUEUED
、JOB_STATE_RUNNING
、JOB_STATE_DONE
などのさまざまな状態に遷移します。Dataflow と Eventarc を統合すると、ジョブの状態が変更されたときにアクションをトリガーできます。
Eventarc はマネージド サービスであるため、基盤となるインフラストラクチャをプロビジョニングまたは管理する必要はありません。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Eventarc APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Eventarc APIs.
Eventarc API を使用するには、プロジェクトに十分な割り当てが必要です。また、Eventarc トリガーに関連付けられたサービス アカウントに適切な権限が必要です。
イベントの宛先を選択する
イベントを受信する宛先を選択します。宛先により、ワークフローの次のステップが決まります。
例:
- SMS アラートを送信するには、Cloud Run 関数を使用してスタンドアロンの HTTP トリガーを作成します。
- より複雑なワークフローには Workflows を使用できます。
- Dataflow パイプラインが Google Kubernetes Engine で実行される大規模なソリューションの一部である場合、トリガーにより、クラスタ内で実行中の GKE サービスにイベントをルーティングできます。
このようなアーキテクチャの詳細については、Eventarc ドキュメントのイベント ドリブン アーキテクチャをご覧ください。
トリガーを作成する
Dataflow ジョブの状態変化に対する Eventarc トリガーを作成するには、次のいずれかのドキュメントをご覧ください。
- Dataflow イベントを Cloud Run にルーティングする
- Dataflow イベントを Google Kubernetes Engine にルーティングする
- Dataflow イベントを Workflows に転送する
- Cloud Run 関数のトリガーを作成する
必要に応じて、Dataflow ジョブ ID でイベントをフィルタできます。たとえば、正規表現に一致するジョブ ID を選択できます。詳細については、パスパターンについてをご覧ください。
プロセス イベント
イベントデータは、イベントがトリガーされた時点の Dataflow ジョブを表します。ペイロードは Job
リソースタイプに似ていますが、steps
、pipeline_description
、transform_name_mapping
フィールドはありません。また、ジョブの状態によっては、一部のフィールドが表示されない場合があります。
ペイロードの例を次に示します。
{
"id":"2023-04-13_16_28_37-12345678",
"projectId":"my-project",
"name":"job1",
"currentState":"JOB_STATE_QUEUED",
"currentStateTime":"2023-04-13T23:28:37.437622Z",
"createTime":"2023-04-13T23:28:37.437622Z",
"location":"us-central1",
"startTime":"2023-04-13T23:28:37.437622Z"
}
ジョブの状態の詳細については、次のトピックをご覧ください。