Je souhaite utiliser Amazon Simple Email Service (Amazon SES) en tant qu'hôte SMTP (Simple Mail Transfer Protocol) pour envoyer des e-mails à partir d'une tâche DAG (Directed Acyclic Graph) sur Amazon Managed Workflows pour Apache Airflow (Amazon MWAA).
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.
Pour utiliser Amazon SES comme hôte SMTP pour envoyer des e-mails à partir d’une tâche DAG sur Amazon MWAA, procédez comme suit :
- Configurez l'envoi d'e-mails avec Amazon SES.
- Créez des informations d'identification SMTP Amazon SES pour envoyer des e-mails dans Amazon MWAA.
Remarque : Les informations d'identification de l'interface SMTP sont différentes des clés d'accès que vous créez avec AWS Identity Access and Management (IAM) pour un utilisateur SMTP.
- Attachez vos options de configuration d'Apache Airflow à votre environnement Amazon MWAA.
- Définissez les valeurs suivantes pour les options de configuration :
Définissez email.email_backend sur airflow.utils.email.send_email_smtp.
Définissez smtp.smtp_host sur email-smtp.region.amazonaws.com.
Remarque : Remplacez region par votre région AWS.
Définissez smtp.smtp_starttls sur Faux.
Définissez smtp.smtp_ssl sur Vrai.
Définissez smtp.smtp_port sur 587.
Remarque : Utilisez le port 587 pour le trafic SMTP. Par défaut, AWS bloque le trafic SMTP sortant sur le port 25 en provenance de toutes les instances Amazon Elastic Compute Cloud (Amazon EC2). Pour envoyer du trafic sortant sur le port 25, soumettez une requête pour supprimer la restriction.
Définissez smtp.smtp_mail_from sur votre adresse e-mail.
Remarque : Pour plus d'informations sur les options de configuration précédentes, consultez les pages [email] et [smtp] sur le site Web d'Apache Airflow.
- Créez un secret AWS Secrets Manager pour l'utilisateur SMTP et un autre pour le mot de passe. Utilisez les informations d'identification SMTP Amazon SES de l'étape 2. Puis, configurez un script de démarrage pour définir les variables d'environnement.
Remarque : Il est recommandé de stocker vos informations d'identification SMTP dans Secrets Manager.
- Ajoutez le script startup.sh suivant à votre compartiment 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"
Remarque : Votre rôle d'exécution Amazon MWAA doit être autorisé à récupérer des valeurs secrètes individuelles.
- Exécutez la commande update-environment pour mettre à jour l'environnement Amazon MWAA avec les options de configuration d’e-mail et le chemin Amazon S3 pour le script de démarrage.
Remarque : Lorsque vous créez ou mettez à jour l'environnement, les rappels Apache Airflow en cas de réussite, d'échec et de nouvelle tentative utilisent la configuration précédente. Vous pouvez également utiliser des tâches avec EmailOperator pour envoyer des e-mails. Pour plus d'informations, consultez la section airflow.operators.email sur le site web d'Apache Airflow.