Cloud Composer 1 | Cloud Composer 2
En esta página, se explica cómo configurar los servicios SMTP para tu entorno de Cloud Composer.
Antes de comenzar
Si tu entorno de Cloud Composer está configurado para una IP privada, asegúrate de que tenga conectividad al extremo de API de tu servicio de correo electrónico externo (como https://api.sendgrid.com
o tu servidor SMTP preferido).
Configura los servicios de correo electrónico de SendGrid
Para recibir notificaciones, configura tus variables de entorno con el fin de enviar correos electrónicos a través del servicio de correo electrónico de SendGrid.
Regístrate con SendGrid
Si aún no lo hiciste, regístrate con SendGrid en la consola de Google Cloud, haz clic en Administrar proveedor en SendGrid para ir al dominio de SendGrid y haz clic en Configuración para recuperar tu nombre de usuario y crear una clave de API. Como desarrollador de Google Cloud, puedes comenzar con 12,000 correos electrónicos gratuitos por mes.
Ir a la API de correo electrónico de SendGrid
Configura las variables
SendGrid usa la clave de API y una dirección de correo electrónico de envío para enviar correos electrónicos. Puedes proporcionar esta información mediante una de las siguientes opciones:
Almacena valores en Secret Manager (recomendado).
Almacenar valores en Airflow
Almacena valores en Secret Manager
Para almacenar valores en Secret Manager, haz lo siguiente:
Instala el paquete
apache-airflow-providers-sendgrid
de PyPI.Configura Secret Manager para tu entorno. Asegúrate de establecer los permisos y las opciones de configuración de Airflow para el backend de los 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 con el nombre
airflow-connections-sendgrid_default
. Configura el valor del Secret en el URI de conexión. Por ejemplo:sendgrid://<username>:<sendgrid_api_key>@smtp.sendgrid.net:587
Para obtener más información sobre el almacenamiento de conexiones en Secret Manager, consulta Administra conexiones de Airflow.
Configura la dirección de correo electrónico para SendGrid:
(Airflow 2.2.4 y versiones posteriores) No es posible configurar la dirección de correo electrónico 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
.(Airflow versiones 2.1.4 a 2.1.3) Configura la siguiente variable de entorno para tu entorno:
Nombre Valor SENDGRID_MAIL_FROM
La dirección de correo electrónico del remitente, como noreply@example.com
.
Almacena 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
Reemplaza lo siguiente:
ENVIRONMENT_NAME
: Es el nombre de tu entorno.LOCATION
: Es la región en la que se encuentra el entorno.USERNAME
: Es el nombre de usuario de SendGrid.SENDGRID_API_KEY
: Es la clave de API de SendGrid.
Configura la dirección de correo electrónico para SendGrid:
(Airflow 2.2.4 y versiones posteriores) 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
.(Airflow versiones 2.1.4 a 2.1.3) Configura la siguiente variable de entorno para tu entorno:
Nombre Valor SENDGRID_MAIL_FROM
La dirección de correo electrónico del remitente, como noreply@example.com
.
Prueba tu 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 verifica que la tarea se complete de forma correcta.
- Accede a SendGrid con tus credenciales de SendGrid.
- En la IU de SendGrid, ve a la página Actividad.
- Busca el correo electrónico en la lista. Deberías ver que SendGrid procesó y entregó el correo electrónico.
Si el correo electrónico no se procesó ni se envió, sigue estos pasos:
- Verifica la configuración de SendGrid.
- Verifica que habilitaste el backend de Secret Manager. Asegúrate de haber otorgado permisos adicionales y de haber configurado anulaciones para las opciones de configuración de Airflow.
- Verifica el filtro de spam en tu cliente de correo electrónico.
Configura servicios SMTP de terceros
Para enviar correos electrónicos a través de un servicio SMTP de terceros, anula la opción de configuración de Airflow email_backend
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 |
Es el nombre de usuario en el servidor SMTP. |
smtp |
smtp_port |
El puerto para el 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 establecer una contraseña a través de smtp_password . Para configurar una contraseña de SMTP, sigue las instrucciones proporcionadas en Configura una contraseña de SMTP. |
smtp |
smtp_mail_from |
La dirección de correo electrónico del remitente, como noreply-composer@ . |
smtp |
smtp_starttls |
Para mejorar la seguridad, configúralo como True . |
smtp |
smtp_ssl |
Para mejorar la seguridad, configúralo como True . |
Configura una contraseña de SMTP para un servicio SMTP de terceros
Guardar una contraseña de SMTP en texto sin formato en el archivo de configuración de Airflow es una mala práctica de seguridad. Es por eso que Cloud Composer no es compatible con este método. En su lugar, puedes usar otros dos métodos para configurar una contraseña de SMTP.
Usa un comando para recuperar una contraseña de SMTP
Puedes usar una anulación de configuración para especificar un comando que obtenga la contraseña de SMTP. Cuando se comunica con el servicio SMTP, Airflow usa este comando para obtener el valor de la contraseña. Especifica un solo comando, sin operadores Bash como barras verticales y redireccionamientos.
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 muestra la contraseña de SMTP. |
Usa un secreto almacenado en el administrador de secretos para recuperar una contraseña de SMTP
Puedes configurar Secret Manager como tu backend de Secrets de Airflow.
Una vez que configuras Secret Manager para tu entorno de Composer, puedes almacenar una contraseña de SMTP en Secret Manager:
Crea un secreto nuevo:
echo -n "SMTP_PASSWORD" | gcloud beta secrets create \ airflow-config-smtp-password \ --data-file=- \ --replication-policy=automatic
Reemplaza
SMTP_PASSWORD
por tu contraseña de SMTP.Configura Airflow para obtener la contraseña de SMTP de Secret Manager. Para hacerlo, anula la siguiente opción de configuración de Airflow:
Sección Clave Valor smtp
smtp_password_secret
smtp-password