電子郵件設定

您可以在您的 airflow.cfg 中設定 [email] 區段的 subject_template 和/或 html_content_template 來設定要發送的電子郵件。

[email]
email_backend = airflow.utils.email.send_email_smtp
subject_template = /path/to/my_subject_template_file
html_content_template = /path/to/my_html_content_template_file

對應的環境變數看起來像

AIRFLOW__EMAIL__EMAIL_BACKEND=airflow.utils.email.send_email_smtp
AIRFLOW__EMAIL__SUBJECT_TEMPLATE=/path/to/my_subject_template_file
AIRFLOW__EMAIL__HTML_CONTENT_TEMPLATE=/path/to/my_html_content_template_file

您可以透過在 [email] 區段中設定 from_email 來設定寄件者的電子郵件地址,例如

[email]
from_email = "John Doe <johndoe@example.com>"

對應的環境變數看起來像

AIRFLOW__EMAIL__FROM_EMAIL="John Doe <johndoe@example.com>"

若要設定 SMTP 設定,請查看標準組態中的 SMTP 區段。如果您不想將 SMTP 憑證儲存在組態檔或環境變數中,您可以建立一個名為 smtp_default 且類型為 Email 的連線,或者選擇自訂連線名稱,並在組態中將 email_conn_id 設定為該名稱,並將 SMTP 使用者名稱密碼儲存在其中。其他 SMTP 設定(例如主機、連接埠等)始終僅從組態檔中讀取。連線可以是任何類型(例如「HTTP 連線」)。

如果您想檢查目前設定的電子郵件後端,您可以使用 airflow config get-value email email_backend 命令,如下例所示。

$ airflow config get-value email email_backend
airflow.utils.email.send_email_smtp

若要存取任務的資訊,您可以在範本檔案中使用 Jinja Templating

例如,html_content_template 檔案可能如下所示

Try {{try_number}} out of {{max_tries + 1}}<br>
Exception:<br>{{exception_html}}<br>
Log: <a href="{{ti.log_url}}">Link</a><br>
Host: {{ti.hostname}}<br>
Mark success: <a href="{{ti.mark_success_url}}">Link</a><br>

注意

有關設定組態的更多資訊,請參閱設定組態選項

使用 SendGrid 發送電子郵件

使用預設 SMTP

您可以使用預設的 Airflow SMTP 後端搭配 SendGrid 發送電子郵件

[smtp]
smtp_host=smtp.sendgrid.net
smtp_starttls=False
smtp_ssl=False
smtp_user=apikey
smtp_password=<generated-api-key>
smtp_port=587
smtp_mail_from=<your-from-email>

對應的環境變數看起來像

AIRFLOW__SMTP__SMTP_HOST=smtp.sendgrid.net
AIRFLOW__SMTP__SMTP_STARTTLS=False
AIRFLOW__SMTP__SMTP_SSL=False
AIRFLOW__SMTP__SMTP_USER=apikey
AIRFLOW__SMTP__SMTP_PASSWORD=<generated-api-key>
AIRFLOW__SMTP__SMTP_PORT=587
AIRFLOW__SMTP__SMTP_MAIL_FROM=<your-from-email>

使用 SendGrid Provider

Airflow 可以設定為使用 SendGrid 發送電子郵件。

請按照以下步驟啟用它

  1. 設定您的 SendGrid 帳戶、SMTP 並複製使用者名稱和 API 金鑰。

  2. sendgrid provider 作為 Airflow 安裝的一部分包含進來,例如,

pip install 'apache-airflow[sendgrid]' --constraint ...
pip install 'apache-airflow-providers-sendgrid' --constraint ...
  1. 更新 airflow.cfg[email] 區段的 email_backend 屬性,即

    [email]
    email_backend = airflow.providers.sendgrid.utils.emailer.send_email
    email_conn_id = sendgrid_default
    from_email = "hello@eg.com"
    

    對應的環境變數看起來像

    AIRFLOW__EMAIL__EMAIL_BACKEND=airflow.providers.sendgrid.utils.emailer.send_email
    AIRFLOW__EMAIL__EMAIL_CONN_ID=sendgrid_default
    SENDGRID_MAIL_FROM=hello@thelearning.dev
    
  2. 建立一個名為 sendgrid_default 的連線,或選擇自訂連線名稱並在 'Email' 類型的 email_conn_id 中設定它。連線中僅使用登入名稱和密碼。

create email connection

注意

成功、失敗和重試的回呼將使用相同的組態發送電子郵件

使用 AWS SES 發送電子郵件

Airflow 可以設定為使用 AWS SES 發送電子郵件。

請按照以下步驟啟用它

  1. amazon 子套件作為 Airflow 安裝的一部分包含進來

pip install 'apache-airflow[amazon]'
  1. 更新 airflow.cfg[email] 區段的 email_backend 屬性

    [email]
    email_backend = airflow.providers.amazon.aws.utils.emailer.send_email
    email_conn_id = aws_default
    from_email = From email <email@example.com>
    

請注意,對於 SES,您必須將 from_email 設定為可以從 SES 發送訊息的有效電子郵件。

  1. 建立一個名為 aws_default 的連線,或選擇自訂連線名稱並在 email_conn_id 中設定它。連線類型應為 Amazon Web Services。

這個條目有幫助嗎?