web-dev-qa-db-ja.com

Airflow Send Emailの設定方法は?

オンラインチュートリアルに従って、次のようにairflow.cfgにメールSMTPサーバーを設定しました。

[email]
email_backend = airflow.utils.email.send_email_smtp


[smtp]
# If you want airflow to send emails on retries, failure, and you want to use
# the airflow.utils.email.send_email_smtp function, you have to configure an
# smtp server here
smtp_Host = smtp.gmail.com
smtp_starttls = True
smtp_ssl = False
# Uncomment and set the user/pass settings if you want to use SMTP AUTH 
# smtp_user =                       
# smtp_password =  
smtp_port = 587
smtp_mail_from = [email protected]

そして私のDAGは以下の通りです:

from datetime import datetime
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.python_operator import PythonOperator
from airflow.operators.email_operator import EmailOperator

def print_hello():
    return 'Hello world!'

default_args = {
        'owner': 'peter',
        'start_date':datetime(2018,8,11),
}

dag = DAG('hello_world', description='Simple tutorial DAG',
          schedule_interval='* * * * *',
          default_args = default_args, catchup=False)

dummy_operator = DummyOperator(task_id='dummy_task', retries=3, dag=dag)

hello_operator = PythonOperator(task_id='hello_task', python_callable=print_hello, dag=dag)

email = EmailOperator(
        task_id='send_email',
        to='[email protected]',
        subject='Airflow Alert',
        html_content=""" <h3>Email Test</h3> """,
        dag=dag
)

email >> dummy_operator >> hello_operator

メールオペレーターは他の2つのオペレーターの後に実行され、メールを送信すると想定しました。しかし、メールは送られませんでした。本当にありがとうございました。どうもありがとうございました。

ベスト

16
Peter Cui

Gmailを使用してAirflowメールアラート用にSMTPサーバーを設定する

DAGの失敗に関するアラートの送信元となるメールID、またはEmailOperatorを使用する場合に、メールIDを作成します。 airflow.cfgファイルを編集して、メールサーバーのSMTP詳細を編集します。

デモでは、任意のGmailアカウントを使用できます。

GmailアカウントのGoogleアプリパスワードを作成します。 [こちらの説明]これは、元のパスワードや2要素認証を使用しないようにするためのものです。

  1. アプリパスワード ページにアクセスします。 Googleアカウントへのログインを求められる場合があります。
  2. 下部にあるアプリを選択をクリックし、使用しているアプリを選択します。
  3. Select deviceをクリックし、使用しているデバイスを選択します。
  4. Generateを選択します。
  5. 指示に従って、デバイスにアプリパスワード(黄色のバーの16文字のコード)を入力します。
  6. Doneを選択します。

完了すると、そのアプリパスワードコードは再び表示されなくなります。ただし、アプリパスワードを作成したアプリとデバイスのリストは表示されます。

airflow.cfgを編集し、次に示すように[smtp]セクションを編集します。

[smtp]
smtp_Host = smtp.gmail.com
smtp_starttls = True
smtp_ssl = False
smtp_user = YOUR_EMAIL_ADDRESS
smtp_password = 16_DIGIT_APP_PASSWORD
smtp_port = 587
smtp_mail_from = YOUR_EMAIL_ADDRESS

以下のパラメータを対応する値に編集します。

YOUR_EMAIL_ADDRESS = Gmailアドレス
16_DIGIT_APP_PASSWORD =上記で生成されたアプリパスワード

25
kaxil