メール通知を構成する

Vertex AI Pipelines は、パイプラインの実行の成功または失敗について通知できます。パイプラインが終了すると、Google Cloud は指定されたメールアドレスに最終ステータスの通知メールを送信します。

このガイドでは、Google Cloud Pipeline Components SDK のメール通知コンポーネントを使用して、パイプラインからのメール通知を構成する方法について説明します。

始める前に

通知を送信するパイプラインを構築する前に、次の手順で Google Cloud プロジェクトと開発環境を設定します。

  1. Google Cloud プロジェクトで ML パイプラインを実行できるようにするには、ガイドの Google Cloud プロジェクトの構成手順を行います。

  2. Kubeflow Pipelines SDK の v2 以降をインストールします。

    pip install --upgrade kfp>=2,<3
    
  1. パイプラインで Vertex AI Python クライアントを使用するには、Vertex AI クライアント ライブラリ v1.7 以降をインストールします。

  2. パイプラインで Vertex AI サービスを使用するには、Google Cloud パイプライン コンポーネントをインストールします。

パイプラインから通知を送信する

次の例では、メール通知タスク(notify_email_task)を定義してパイプラインの終了ハンドラ(dsl.ExitHandler)に追加することにより、メール通知を構成しています。この通知タスクは、パイプラインの終了時に、メール通知コンポーネントの VertexNotificationEmailOp オペレータを呼び出します。

from kfp import dsl
from kfp import compiler
from google_cloud_pipeline_components.v1.vertex_notification_email import VertexNotificationEmailOp

@dsl.pipeline(
    name='PIPELINE_NAME',
    pipeline_root=PIPELINE_ROOT_PATH,
)
def TASK_NAME():
    notify_email_task = VertexNotificationEmailOp(recipients=RECIPIENTS_LIST)

    with dsl.ExitHandler(notify_email_task):
        # Add your pipeline tasks here.

compiler.Compiler().compile(pipeline_func=notification_email_pipeline,
        package_path='notification_email_pipeline.yaml')

次のように置き換えます。

  • PIPELINE_NAME: パイプラインの名前。

  • PIPELINE_ROOT_PATH: パイプライン サービス アカウントがアクセスできる Cloud Storage URI を指定します。パイプライン実行のアーティファクトはパイプライン ルート内に保存されます。

    パイプライン ルートは、パイプライン関数の @kfp.dsl.pipeline アノテーションの引数として設定することも、create_run_from_job_spec を呼び出してパイプライン実行を作成する際に設定することもできます。

  • TASK_NAME: メール通知を構成するパイプライン タスクの名前。

  • RECIPIENTS_LIST: 通知メールの送信先となるメールアドレスのカンマ区切りリスト。最大で 3 個までのアドレスを指定できます。

dsl.ExitHandler 終了ハンドラ関数の本文にパイプライン タスクを追加します。このように終了ハンドラ関数のタスクをラップすることで、パイプラインの終了時に、通知メール コンポーネントがこれらのタスクのステータスを報告するように指定できます。たとえば、終了ハンドラのコンテンツに含まれるタスクが失敗した場合、通知はステータスを失敗と報告します。

通知メールの例

パイプラインから通知を送信するのコードサンプルを使用してパイプラインのメール通知を構成すると、Vertex AI はパイプラインの終了時に次のようなメール通知を送信します。

件名: Vertex Pipelines ジョブ "PIPELINE_NAME" タスク "TASK_NAME"
From: Google 通知 <notify-noreply@google.com>

Vertex AI のお客様、

Vertex Pipelines ジョブ "PIPELINE_NAME" タスク "TASK_NAME" は、ステータス {status} で終了しました。

追加情報:
- プロジェクト: {project}
- パイプライン名: PIPELINE_NAME
- パイプライン ジョブ ID: {pipeline_job_id}
- 開始時間: {start_time}

Cloud Console でこのパイプライン ジョブを表示するには、リンク {console_link} を使用します。

よろしくお願いいたします。
Google Cloud AI チーム

この例では、次のようになります。

  • {status} は、タスクの最終ステータス(SUCCEEDEDFAILEDCANCELLED)を表します。
  • {project} は、プロジェクト名です。
  • {pipeline_job_id} は、一意のパイプライン ジョブ ID です。
  • {start_time} は、パイプラインの開始時間を表します。
  • {console_link} は、Google Cloud コンソールのパイプライン ジョブへのハイパーリンクです。