Quiero usar Amazon Simple Email Service (Amazon SES) como host del Protocolo simple de transferencia de correo (SMTP) para enviar correos electrónicos desde una tarea de gráfico acíclico dirigido (DAG) en Amazon Managed Workflows para Apache Airflow (Amazon MWAA).
Solución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Para usar Amazon SES como host SMTP para enviar correos electrónicos desde una tarea de DAG en Amazon MWAA, sigue estos pasos:
- Configura el envío de correos electrónicos con Amazon SES.
- Crea credenciales SMTP de Amazon SES para enviar correos electrónicos en Amazon MWAA.
Nota: Las credenciales de la interfaz SMTP son diferentes de las claves de acceso que se crean con AWS Identity Access and Management (IAM) para un usuario de SMTP.
- Adjunta las opciones de configuración de Apache Airflow a tu entorno de Amazon MWAA.
- Establece los siguientes valores para las opciones de configuración:
Establece email.email_backend en airflow.utils.email.send_email_smtp.
Establece smtp.smtp_host en email-smtp.region.amazonaws.com.
Nota: Sustituye region por tu región de AWS.
Establece smtp.smtp_starttls en False.
Establece smtp.smtp_ssl en True.
Establece smtp.smtp_port en 587.
Nota: Utiliza el puerto 587 para el tráfico SMTP. De forma predeterminada, AWS bloquea el tráfico SMTP saliente en el puerto 25 desde todas las instancias de Amazon Elastic Compute Cloud (Amazon EC2). Para enviar tráfico saliente al puerto 25, envía una solicitud para eliminar la restricción.
Establece smtp.smtp_mail_from en tu dirección de correo electrónico.
Nota: Para obtener más información sobre las opciones de configuración anteriores, consulta [email] y [smtp] en el sitio web de Apache Airflow.
- Crea un secreto de AWS Secrets Manager para el usuario de SMTP y otro para la contraseña. Utiliza las credenciales de SMTP de Amazon SES del paso 2. A continuación, configura un script de inicio para establecer las variables de entorno.
Nota: Se recomienda almacenar las credenciales de SMTP en Secrets Manager.
- Agrega el siguiente script startup.sh a tu bucket de 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"
Nota: Tu rol de ejecución de Amazon MWAA debe tener permiso para recuperar valores secretos individuales.
- Ejecuta el comando update-environment para actualizar el entorno de Amazon MWAA con las opciones de configuración del correo electrónico y la ruta de Amazon S3 para el script de inicio.
Nota: Al crear o actualizar el entorno, las devoluciones de llamadas de Apache Airflow para detectar una operación correcta, un error y un reintento utilizan la configuración anterior. También puedes usar tareas con EmailOperator para enviar correos electrónicos. Para obtener más información, consulta airflow.operators.email en el sitio web de Apache Airflow.