配置电子邮件通知

Cloud Composer 1 | Cloud Composer 2

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

准备工作

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

配置 SendGrid 电子邮件服务

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

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

    转到 SendGrid Email API

  2. 为您的环境设置以下环境变量

    名称
    SENDGRID_MAIL_FROM 发件人电子邮件地址,例如 noreply-composer@<your-domain>
    SENDGRID_API_KEY 您的 SendGrid API 密钥。
  3. 如需测试 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 服务配置 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

后续步骤