Amazon Managed Workflows for Apache Airflow (Amazon MWAA) での有向非巡回グラフ (DAG) タスクからメールを送信するために、Amazon Simple Email Service (Amazon SES) を Simple Mail Transfer Protocol (SMTP) ホストに使用したいです。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
Amazon SES を SMTP ホストとして使用して Amazon MWAA での DAG タスクからメールを送信するには、次のステップを実行します。
- Amazon SES を使用してメール送信を設定します。
- Amazon MWAA でメールを送信するための Amazon SES SMTP 認証情報を作成します。
注: SMTP インターフェイスの認証情報は、AWS Identity Access and Management (IAM) を使用して SMTP ユーザー用に作成するアクセスキーとは異なります。
- Apache Airflow 設定オプションを Amazon MWAA 環境にアタッチします。
- 設定オプションに次の値を設定します。
email.email_backend を airflow.utils.email.send_email_smtp に設定します。
smtp.smtp_host を email-smtp.region.amazonaws.com に設定します。
注: region は、お使いの AWS リージョンに置き換えます。
smtp.smtp_starttls を False に設定します。
smtp.smtp_ssl を True に設定します。
smtp.smtp_port を 587 に設定します。
注: SMTP トラフィックにはポート 587 を使用します。デフォルトでは、AWS はすべての Amazon Elastic Compute Cloud (Amazon EC2) インスタンスからのポート 25 でのアウトバウンド SMTP トラフィックをブロックします。ポート 25 でアウトバウンドトラフィックを送信する場合は、この制限を削除するリクエストを送信してください。
smtp.smtp_mail_from を、お使いのメールアドレスに設定します。
注: 上記の設定オプションの詳細については、Apache Airflow のウェブサイトで [email] および [smtp] について参照してください。
- AWS Secrets Manager のシークレットを SMTP ユーザー用およびパスワード用に 1 つずつ作成します。ステップ 2 の Amazon SES SMTP 認証情報を使用します。次に起動スクリプトを構成し、環境変数を設定します。
注: SMTP 認証情報は、Secrets Manager に格納することがベストプラクティスです。
- 次の startup.sh スクリプトを Amazon Simple Storage Service (Amazon S3) バケットに追加します。
#!/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 MWAA 実行ロールには、個々のシークレット値を取得するためのアクセス許可が必要です。
- update-environment コマンドを実行すると、起動スクリプトのメール設定オプションと Amazon S3 パスを使用して Amazon MWAA 環境が更新されます。
注: 環境を作成または更新すると、成功、失敗、再試行に対し、Apache Airflow コールバックは上記の設定を使用します。EmailOperator でタスクを使用してメールを送信することもできます。詳細については、Apache Airflow のウェブサイトで airflow.operators.email を参照してください。