次の方法で共有


Apache Airflow ジョブで SMTP サーバーを設定する

Apache Airflow ジョブは、Apache Airflow を使用しています。

Apache Airflow には、タスクが失敗、成功、または再試行したときにメール通知とアラートを送信できる強力な機能が含まれます。 この機能は、ワークフローを監視し、発生する可能性のある問題のトラブルシューティングを行うために不可欠です。

メール通知とアラートを有効にするには、Airfow に代わってメールを送信できる簡易メール転送プロトコル (SMTP) サーバーを設定する必要があります。 SMTP は、インターネット経由でメールを送受信するための標準プロトコルです。 独自の SMTP サーバー、または Outlook、Gmail、SendGrid、Mailgun などのサードパーティのサービスを使用できます。 この記事では、Gmail を使って Apache Airflow ジョブ用に SMTP サーバーを構成する方法を見ていきます。

前提条件

  • SMTP サーバー: サーバーまたはサービスの SMTP ホスト、ポート、ユーザー名、パスワードが必要です。 Gmail を使用している場合は、お使いのアカウントのアプリ パスワードを作成します。

  • 通知とアラートの送信者として使用するメール アドレス。 このメール アドレスは、SMTP ユーザー名と同じにすることもできますし、または SMTP サービスで許可されている場合は別のメール アドレスにすることもできます。

  • 通知とアラートを受信する 1 個以上のメール アドレス。 ご自身のメール アドレス、またはチーム メンバー、利害関係者、またはクライアントのメール アドレスを指定できます。

環境変数を設定する

  • 前提条件が揃ったら、SMTP サーバーまたはサービスを使うように Apache Airflow ジョブを構成できます。 次のフィールドにある Airflow configurations セクションを編集します:

    • AIRFLOW__SMTP__SMTP_HOST: SMTP サーバーまたはサービスのホスト名または IP アドレス。
    • AIRFLOW__SMTP__SMTP_STARTTLS: SMTP サーバーまたはサービスに接続するときに TLS (トランスポート層セキュリティ) 暗号化を使用するかどうか。 SMTP サーバーまたはサービスが TLS をサポートしている場合は、この構成を True に設定し、それ以外の場合は False に設定します。
    • AIRFLOW__SMTP__SMTP_SSL: SMTP サーバーまたはサービスに接続するときに SSL (Secure Sockets Layer) 暗号化を使用するかどうか。 SMTP サーバーまたはサービスで SSL が必要な場合は True、それ以外の場合は False に設定します。
    • AIRFLOW__SMTP__SMTP_USER: SMTP サーバーまたはサービスのユーザー名。 通常、このユーザー名がメール アドレスとなりますが、SendGrid を使用している場合は API キーとなります。
    • AIRFLOW__SMTP__SMTP_PASSWORD: SMTP サーバーまたはサービスのパスワード。 通常、このパスワードはお使いの電子メールのパスワードです。Gmail を使用している場合はアプリのパスワードとなります。
    • AIRFLOW__SMTP__SMTP_PORT: SMTP サーバーまたはサービスのポート番号。 このポートは、暗号化方法と SMTP サービスに応じて、通常 25、465、または 587 となります。
    • AIRFLOW__SMTP__SMTP_MAIL_FROM: 通知とアラートの送信者として使用する電子メール アドレス。 このメールは SMTP ユーザー名と同じにするとこができますが、SMTP サービスで許可されている場合は別のメールにすることができます。

    Gmail を使用している場合は、次の値を参照してください。

    Airflow の構成 Gmail
    AIRFLOW__SMTP__SMTP_HOST smtp.gmail.com
    AIRFLOW__SMTP__SMTP_STARTTLS 正しい
    AIRFLOW__SMTP__SMTP_SSL いいえ
    AIRFLOW__SMTP__SMTP_USER your_email@gmail.com
    AIRFLOW__SMTP__SMTP_PASSWORD あなたのアプリパスワード
    AIRFLOW__SMTP__SMTP_PORT 587
    AIRFLOW__SMTP__SMTP_MAIL_FROM your_email@gmail.com

    SMTP のエアフローの構成を示すスクリーンショット。

例: DAG 障害時に電子メールを送信する DAG

   from airflow import DAG
   from airflow.operators.bash_operator import BashOperator
   from airflow.utils.email import send_emailfrom datetime import datetime


   default_args = {
   "owner": "airflow",
   "start_date": datetime(2024, 3, 1),
   "email": ["your_email@gmail.com"], # The email address that you want to receive the notifications and alerts
   "email_on_failure": True,
   "email_on_retry": False,
   "retries": 0
   }

   with DAG(
       "email_callback_test",
       default_args=default_args,
       schedule_interval=None
   ) as dag:

   fail_task = BashOperator(
           task_id="fail_task",
           bash_command="cd fail",
       )

   fail_task

SMTP サーバーから受信した電子メールのサンプル

この電子メールには以下の情報が含まれています。

  • 試行回数

  • エラー

  • ログ: 失敗したタスク ログにリダイレクトするリンク。

  • ホスト: Apache Airflow ジョブのホスト名

  • ホスト: Apache Airflow ジョブのホスト名

  • 成功をマークする: 失敗した DAG 状態にリダイレクトするリンク。

    要件として追加されたプライベート パッケージを示すスクリーンショット。

クイック スタート: Apache Airflow ジョブを作成する