Eventarc を使用して Dataflow ジョブを管理する

このドキュメントでは、Dataflow ジョブの状態変化によってトリガーされるイベント ドリブン ワークフローを作成する方法について説明します。

たとえば、次のようなワークフローが考えられます。

  • 重要なジョブが失敗した場合は、オンコール エンジニアにアラートを送信する。
  • バッチジョブが完了したときにユーザーに通知するか、別の Dataflow ジョブを開始する。
  • ジョブで使用されるリソース(Cloud Storage バケットなど)をクリーンアップする。

概要

Eventarc は、他のサービスからのイベントをリッスンし、さまざまな宛先にルーティングできる Google Cloud サービスです。

Dataflow ジョブを実行すると、ジョブは JOB_STATE_QUEUEDJOB_STATE_RUNNINGJOB_STATE_DONE などのさまざまな状態に遷移します。Dataflow と Eventarc を統合すると、ジョブの状態が変更されたときにアクションをトリガーできます。

Eventarc はマネージド サービスであるため、基盤となるインフラストラクチャをプロビジョニングまたは管理する必要はありません。

始める前に

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Eventarc APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Eventarc APIs.

    Enable the APIs

Eventarc API を使用するには、プロジェクトに十分な割り当てが必要です。また、Eventarc トリガーに関連付けられたサービス アカウントに適切な権限が必要です。

イベントの宛先を選択する

イベントを受信する宛先を選択します。宛先により、ワークフローの次のステップが決まります。

例:

  • SMS アラートを送信するには、Cloud Run 関数を使用してスタンドアロンの HTTP トリガーを作成します。
  • より複雑なワークフローには Workflows を使用できます。
  • Dataflow パイプラインが Google Kubernetes Engine で実行される大規模なソリューションの一部である場合、トリガーにより、クラスタ内で実行中の GKE サービスにイベントをルーティングできます。

このようなアーキテクチャの詳細については、Eventarc ドキュメントのイベント ドリブン アーキテクチャをご覧ください。

トリガーを作成する

Dataflow ジョブの状態変化に対する Eventarc トリガーを作成するには、次のいずれかのドキュメントをご覧ください。

必要に応じて、Dataflow ジョブ ID でイベントをフィルタできます。たとえば、正規表現に一致するジョブ ID を選択できます。詳細については、パスパターンについてをご覧ください。

プロセス イベント

イベントデータは、イベントがトリガーされた時点の Dataflow ジョブを表します。ペイロードは Job リソースタイプに似ていますが、stepspipeline_descriptiontransform_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"
}

ジョブの状態の詳細については、次のトピックをご覧ください。

次のステップ