Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
En esta página se explica cómo configurar los servicios SMTP de su entorno de Cloud Composer.
Antes de empezar
Si tu entorno de Cloud Composer está configurado para usar una IP privada, asegúrate de que tenga conectividad con el endpoint de la API de tu servicio de correo externo (como
https://api.sendgrid.com
o tu servidor SMTP preferido).Los componentes de Airflow en entornos de IP pública establecen conexiones salientes, incluido el envío de mensajes de correo, desde direcciones IP públicas y puertos asignados automáticamente. Si quieres que tus entornos de IP pública envíen correos desde direcciones IP y puertos predeterminados, puedes hacerlo conectando una red de VPC a tu entorno y cambiándolo a IP privada. Para obtener más información sobre las redes en Cloud Composer 3, consulta Cambiar el tipo de red del entorno.
El programador de Airflow de Cloud Composer 3 solo admite los siguientes backends de correo electrónico personalizados:
- airflow.providers.sendgrid.utils.emailer.send_email
- airflow.utils.email.send_email_smtp
Si configuras otro backend de correo electrónico personalizado, esta configuración no se propagará al programador. Por lo tanto, si se enviaran correos directamente desde el programador, este dejaría de responder y fallaría repetidamente.
Los workers de Airflow y los procesadores de DAG admiten otros back-ends personalizados, por lo que puedes enviar correos desde estos componentes. Un caso habitual en el que el correo se envía directamente desde el programador son las alertas por correo sobre fallos de DAG. Como solución alternativa, puedes enviar alertas de fallo de DAG a través de una retrollamada registrada. Se enviarán desde el procesador de DAG. También puedes usar otros back-ends personalizados con operadores de Airflow que envíen correos. En este caso, el correo se enviará desde un trabajador de Airflow que procese la tarea.
Configurar los servicios de correo de SendGrid
Para recibir notificaciones, configura las variables de entorno para enviar correos a través del servicio de correo SendGrid.
Registrarse en SendGrid
Si aún no lo has hecho, regístrate en SendGrid en la Google Cloud consola, haz clic en Manage On Provider para ir al dominio de SendGrid y, a continuación, en Settings para obtener tu nombre de usuario y crear una clave de API. Como desarrollador de Google Cloud , puedes empezar con 12.000 correos gratuitos al mes.
Configurar variables
SendGrid usa la clave de API y una dirección de correo electrónico De para enviar correos. Puede proporcionar esta información con una de las siguientes opciones:
Almacenar valores en Secret Manager
Para almacenar valores en Secret Manager, sigue estos pasos:
Configura Secret Manager para tu entorno. Asegúrate de configurar los permisos y las opciones de configuración de Airflow para el backend de secretos.
Anula las siguientes opciones de configuración de Airflow:
Sección Clave Valor email
email_conn_id
sendgrid_default
email
email_backend
airflow.providers.sendgrid.utils.emailer.send_email
Crea un secreto para la conexión de SendGrid llamada
airflow-connections-sendgrid_default
. Asigna el valor del secreto al URI de conexión. Por ejemplo:sendgrid://<username>:<sendgrid_api_key>@smtp.sendgrid.net:587
Para obtener más información sobre cómo almacenar conexiones en Secret Manager, consulta el artículo Gestionar conexiones de Airflow.
Configura la dirección de correo de SendGrid. No es posible configurar la dirección de correo a través de un secreto. En su lugar, anula la siguiente opción de configuración de Airflow:
Sección Clave Valor email
from_email
La dirección de correo electrónico del remitente, como noreply@example.com
.
Almacenar valores en Airflow
Anula las siguientes opciones de configuración de Airflow:
Sección Clave Valor email
email_conn_id
sendgrid_default
email
email_backend
airflow.providers.sendgrid.utils.emailer.send_email
En Airflow, configura la conexión llamada
sendgrid_default
. Especifica la clave de API de Sendgrid en el URI de conexión. Por ejemplo:gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ connections add -- \ --conn-uri "sendgrid://USERNAME:SENDGRID_API_KEY@smtp.sendgrid.net:587" \ sendgrid_default
Haz los cambios siguientes:
ENVIRONMENT_NAME
: el nombre de tu entorno.LOCATION
: la región en la que se encuentra el entorno.USERNAME
: nombre de usuario de SendGrid.SENDGRID_API_KEY
: la clave de API de SendGrid.
Configura la dirección de correo de SendGrid. No es posible configurar la dirección de correo a través de un secreto. En su lugar, anula la siguiente opción de configuración de Airflow:
Sección Clave Valor email
from_email
La dirección de correo electrónico del remitente, como noreply@example.com
.
Probar la configuración de SendGrid
Para probar la configuración de SendGrid, sigue estos pasos:
- Crea un DAG de prueba que use
EmailOperator
. Por ejemplo:
- Sube el DAG a tu entorno y comprueba que la tarea se completa correctamente.
- Inicia sesión en SendGrid con tus credenciales de SendGrid.
- En la interfaz de usuario de SendGrid, ve a la página Activity (Actividad).
- Busca el correo en la lista. Deberías ver que SendGrid ha procesado y enviado el correo.
Si el correo no se procesa ni se entrega:
- Comprueba tu configuración de SendGrid.
- Verifica que hayas habilitado el backend de Secret Manager. Asegúrate de haber concedido permisos adicionales y de haber definido anulaciones para las opciones de configuración de Airflow.
- Comprueba el filtro de spam de tu cliente de correo.
Configurar servicios SMTP de terceros
Para enviar correos a través de un servicio SMTP de terceros, anula la opción de configuración de email_backend
Airflow
y configura otros parámetros relacionados con SMTP.
Para configurar un servicio SMTP de terceros, anula las siguientes opciones de configuración de Airflow:
Sección | Clave | Valor |
---|---|---|
email |
email_backend |
airflow.utils.email.send_email_smtp |
smtp |
smtp_host |
El nombre de host del servidor SMTP. |
smtp |
smtp_user |
Nombre de usuario del servidor SMTP. |
smtp |
smtp_port |
Puerto del servidor SMTP. El puerto 25 no está disponible. Puedes usar otros puertos, como los puertos SMTP estándar 465 y 587. |
smtp |
smtp_password |
No se puede definir una contraseña mediante smtp_password . Para definir una contraseña SMTP, sigue las instrucciones que se indican en Configurar una contraseña SMTP. |
smtp |
smtp_mail_from |
La dirección de correo electrónico del remitente, como noreply-composer@ . |
smtp |
smtp_starttls |
Para aumentar la seguridad, selecciona True . |
smtp |
smtp_ssl |
Para aumentar la seguridad, selecciona True . |
Configurar una contraseña SMTP para un servicio SMTP de terceros
Mantener una contraseña SMTP en texto sin formato en el archivo de configuración de Airflow es una práctica de seguridad inadecuada. Por eso, Cloud Composer no admite este método. En su lugar, puedes usar otros dos métodos para configurar una contraseña SMTP.
Usar un comando para obtener la contraseña de SMTP
Puede usar una anulación de configuración para especificar un comando que obtenga la contraseña SMTP. Cuando se comunica con tu servicio SMTP, Airflow usa este comando para obtener el valor de la contraseña. Especifica un solo comando, sin operadores de Bash, como tuberías y redirecciones.
Para usar este método, anula la siguiente opción de configuración de Airflow:
Sección | Clave | Valor |
---|---|---|
smtp |
smtp_password_cmd |
Especifica un comando que devuelva la contraseña SMTP. |
Usar un secreto almacenado en Secret Manager para obtener una contraseña SMTP
Puedes configurar Secret Manager como backend de secretos de Airflow.
Una vez que haya configurado Secret Manager para su entorno de Composer, podrá almacenar una contraseña SMTP en Secret Manager:
Para crear un secreto, sigue estos pasos:
echo -n "SMTP_PASSWORD" | gcloud beta secrets create \ airflow-config-smtp-password \ --data-file=- \ --replication-policy=automatic
Sustituye
SMTP_PASSWORD
por tu contraseña de SMTP.Configura Airflow para obtener la contraseña SMTP de Secret Manager. Para ello, anula la siguiente opción de configuración de Airflow:
Sección Clave Valor smtp
smtp_password_secret
smtp-password