Amazon Simple Email Service (Amazon SES) を SMTP ホストとして使用して、Amazon Managed Workflows for Apache Airflow (Amazon MWAA) DAG タスクからメールを送信したいです。
解決策
Amazon SES を SMTP ホストとして使用して Amazon MWAA DAG タスクからメールを送信するには、次のステップを実行します。
-
Amazon SES を使用してメール送信を設定します。
-
Amazon MWAA でメールを送信するための Amazon SES SMTP 認証情報を作成します。
注: SMTP インターフェイスの認証情報は、AWS Identity Access and Management (IAM) を使用して SMTP ユーザー用に作成するアクセスキーとは異なります。
-
Apache Airflow 設定オプションを環境にアタッチします。
-
設定オプションに次の値を設定します。
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 を参照してください。
注: SMTP トラフィックにはポート 587 を使用します。デフォルトでは、AWS はすべての Amazon Elastic Compute Cloud (Amazon EC2) インスタンスからのポート 25 のアウトバウンド SMTP トラフィックをブロックします。ポート 25 でアウトバウンドトラフィックを送信する場合は、この制限を削除するようリクエストしてください。
smtp.smtp_mail_from を、お使いのメールアドレスに設定します。Apache Airflow のウェブサイトで smtp_mail_from を参照してください。
-
Amazon SES SMTP 認証情報を使用して、設定オプション smtp.smtp_user と smtp.smtp_password をプレーンテキストで追加します。
注: SMTP 認証情報を AWS シークレットマネージャーに格納するのがベストプラクティスです。
-
SMTP ユーザーとパスワード用の Secrets Manager シークレットを作成します。起動スクリプトを使用して環境変数を設定します。
-
次の 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"
-
前述のメール設定オプションと起動スクリプトの Amazon S3 パスを使用して Amazon MWAA 環境を更新します。
注: 環境を作成または更新すると、成功、失敗、再試行に対し、Apache Airflow コールバックは上記の設定を使用します。EmailOperator でタスクを使用してメールを送信することもできます。詳細については、Apache Airflow のウェブサイトで airflow.operators.email を参照してください。