使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何使用 Amazon SES 作为 SMTP 主机来发送来自 Amazon MWAA DAG 任务的电子邮件?

2 分钟阅读
0

我想使用 Amazon Simple Email Service (Amazon SES) 作为 SMTP 主机来发送来自 Amazon Managed Workflows for Apache Airflow (Amazon MWAA) DAG 任务的电子邮件。

解决方法

要使用 Amazon SES 作为 SMTP 主机发送来自 Amazon MWAA DAG 任务的电子邮件,请完成以下步骤:

  1. 使用 Amazon SES 设置电子邮件发送

  2. 创建 Amazon SES SMTP 凭证以在 Amazon MWAA 中发送电子邮件。
    **注意:**SMTP 接口证书不同于您使用 AWS Identity Access and Management (IAM) 为 SMTP 用户创建的访问密钥。

  3. 将您的 Apache Airflow 配置选项附加到您的环境。

  4. 为配置选项设置以下值:
    email.email_backend 设置为 airflow.utils.email.send_email_smtp。请参阅 Apache Airflow 网站上的 email_backend
    smtp.smtp_host 设置为 **email-smtp.region.**amazonaws.com。将 region 替换为您的 AWS 区域。请参阅 Apache Airflow 网站上的 smtp_host
    smtp.smtp_starttls 设置为 False。请参阅 Apache Airflow 网站上的 smtp_starttls
    smtp.smtp_ssl 设置为 True。请参阅 Apache Airflow 网站上的 smtp_ssl
    smtp.smtp_port 设置为 587。请参阅 Apache Airflow 网站上的 smtp_port
    **注意:**使用端口 587 处理 SMTP 流量。默认情况下,AWS 会阻止端口 25 上来自所有 Amazon Elastic Compute Cloud (Amazon EC2) 实例的出站 SMTP 流量。要通过端口 25 发送出站流量,需请求移除该限制
    smtp.smtp_mail_from 设置为您的电子邮件地址。请参阅 Apache Airflow 网站上的 smtp_mail_from

  5. 使用您的 Amazon SES SMTP 凭证,以纯文本形式添加配置选项smtp.smtp_usersmtp.smtp_password
    **注意:**将您的 SMTP 证书存储在 AWS 密钥管理器中是一种最佳实践。

  6. 为 SMTP 用户和密码 Secrets Manager 秘密。使用启动脚本设置环境变量。

  7. 将以下 startup.sh 脚本添加到 Apache Airflow Amazon Simple Storage Service (Amazon S3) 存储桶中:
    **注意:**您的 Amazon MWAA 执行角色必须有权检索各个秘密值

    #!/bin/sh
    
    # Get the SMTP username and password from secrets manager
    username=$(aws secretsmanager get-secret-value —secret-id airflow/variables/smtp.smtp_user —query SecretString —output text)
    password=$(aws secretsmanager get-secret-value —secret-id airflow/variables/smtp.smtp_password —query SecretString —output text)
    
    # Set the SMTP Environment variables with the username and password retrieved from Secrets Manager
    export AIRFLOW__SMTP__SMTP_USER=$username
    export AIRFLOW__SMTP__SMTP_PASSWORD=$password
    
    # Print the SMTP user
    echo "SMTP user is $AIRFLOW__SMTP__SMTP_USER"
  8. 使用前面的电子邮件配置选项和启动脚本的 Amazon S3 路径,更新 Amazon MWAA 环境。

**注意:**创建或更新环境时,Apache Airflow 成功、失败和重试的回调会使用前面的配置。您还可以使用 EmailOperator 来发送电子邮件。有关更多信息,请参阅 Apache Airflow 网站上的 airflow.operators.email