配置电子邮件通知

本页面介绍如何为 Cloud Composer 环境配置 SMTP 服务。

准备工作

如果您的 Cloud Composer 环境已配置了专用 IP,请确保它已连接到您的外部电子邮件服务(例如 https://api.sendgrid.com 或您的首选 SMTP 服务器)的 API 端点。

配置 SendGrid 电子邮件服务

若想接收通知,请配置相应环境变量,以通过 SendGrid 电子邮件服务发送电子邮件。

  1. 如果您尚未注册 SendGrid,请通过 Google Cloud Console 注册 SendGrid 并创建 API 密钥。作为 Google Cloud 开发者,您每月可免费发送 12000 封电子邮件。

  2. 在 Cloud Console 中,打开创建环境页面。

    打开“创建环境”页面

  3. 节点配置下,点击添加环境变量

  4. 输入以下环境变量:

    名称
    SENDGRID_MAIL_FROM 发件人电子邮件地址,例如 noreply-composer@<your-domain>
    SENDGRID_API_KEY 您的 SendGrid API 密钥。
  5. 如需测试 SendGrid 配置,请执行以下操作:

    1. 创建一个使用 EmailOperator 的测试 DAG。
    2. 将此 DAG 上传到您的环境,并检查 EmailOperator 任务是否成功完成。
    3. 使用您的 SendGrid 凭据登录 SendGrid。
    4. 在 SendGrid 界面中,转到“活动”页面。
    5. 在列表中搜索该电子邮件。您应该会看到 SendGrid 已处理并递送这封电子邮件。
    6. 如果该电子邮件未被处理和递送,请执行以下操作:
      • 检查 Sendgrid 配置。
      • 验证 SENDGRID_MAIL_FROMSENDGRID_API_KEY 环境变量是否正确。
      • 检查您的电子邮件客户端的垃圾邮件过滤器。

配置第三方 SMTP 服务

如需通过第三方 SMTP 服务发送电子邮件,请替换 email_backend Airflow 配置选项并配置其他与 SMTP 相关的参数。

如需配置第三方 SMTP 服务,请替换 Airflow 配置选项

部分
email email_backend airflow.utils.email.send_email_smtp
smtp smtp_host SMTP 服务器的主机名。
smtp smtp_user SMTP 服务器上的用户名。
smtp smtp_port SMTP 服务器的端口。端口 25 不可用。您可以使用其他端口,例如标准 SMTP 端口 465 和 587。
smtp smtp_password 不支持通过 smtp_password 设置密码。要设置 SMTP 密码,请按照配置 SMTP 密码中的说明操作。
smtp smtp_mail_from 发件人电子邮件地址,例如 noreply-composer@
smtp smtp_starttls 为增强安全性,请将其设置为 True
smtp smtp_ssl 为增强安全性,请将其设置为 True

对于其他 SMTP 配置,请参阅您的 Airflow 版本所对应的 default_airflow.cfg

为第三方 SMTP 服务配置 SMTP 密码

将 SMTP 密码以纯文本形式保存在 Airflow 配置文件中是一种不好的安全做法。因此,Cloud Composer 不支持此方法。您可以使用其他两种方法来配置 SMTP 密码。

使用命令检索 SMTP 密码

您可以使用配置替换来指定用于获取 SMTP 密码的命令。与 SMTP 服务通信时,Airflow 使用此命令来获取密码的值。

如需使用此方法,请替换以下 Airflow 配置属性:

部分
smtp smtp_password_cmd 指定用于返回 SMTP 密码的命令。

使用存储在 Secret Manager 中的密文来检索 SMTP 密码

您可以将 Secret Manager 配置为您的 Airflow Secret 后端

为 Composer 环境配置 Secret Manager 后,您可以将 SMTP 密码存储在 Secret Manager 中:

  1. 创建新 Secret :

    echo -n "SMTP_PASSWORD" | gcloud beta secrets create \
      airflow-variables-smtp-password \
      --data-file=- \
      --replication-policy=automatic
    

    SMTP_PASSWORD 替换为您的 SMTP 密码。

  2. 配置 Airflow 以从 Secret Manager 获取 SMTP 密码。为此,请替换以下 Airflow 配置属性:

    部分
    smtp smtp_password_secret smtp-password

后续步骤