Configura las notificaciones por correo electrónico

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 la IP privada, asegúrate de que tenga conectividad al extremo de la 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.

Registrarse con SendGrid

Si aún no lo hiciste, regístrate en SendGrid en Google Cloud Console y crea 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

Cómo configurar variables

SendGrid debe usar la clave de API y una dirección de correo electrónico de envío para enviar correos electrónicos. Puedes usar una de las siguientes opciones:

  • Almacena valores en Secret Manager (recomendado).

  • Establezca los valores mediante variables de entorno.

Almacena valores en Secret Manager

Para almacenar valores en Secret Manager, haz lo siguiente:

  1. Instala el paquete PyPI apache-airflow-providers-sendgrid.

  2. Configura Secret Manager para tu entorno. Asegúrate de establecer los permisos y las opciones de configuración de Airflow para el backend de Secrets.

  3. 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
  4. Crea un secreto para la conexión de SendGrid llamada airflow-connections-sendgrid_default. Establece el valor del secreto en el URI de conexión. Por ejemplo:

    sendgrid://username:<sendgrid_api_key>@smtp.sendgrid.net:587
    
  5. Configura la dirección de correo electrónico para SendGrid:

    • (Airflow 2.2.4 y versiones posteriores) Crea un secreto con el nombre airflow-variables-from_email. Configura el valor del Secret como la dirección de correo electrónico De origen, como noreply@example.com.
    • (Airflow versión 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 variables de entorno

Para almacenar valores en variables de entorno, haz lo siguiente:

  1. Configura las siguientes variables de entorno para tu entorno:

    Nombre Valor
    SENDGRID_MAIL_FROM La dirección de correo electrónico del remitente, como noreply@example.com
    SENDGRID_API_KEY Tu clave de API de SendGrid.

Prueba la configuración de SendGrid

Para probar la configuración de SendGrid, sigue estos pasos:

  1. Crea un DAG de prueba que use EmailOperator. Por ejemplo:

    import datetime
    import airflow
    from airflow.operators.email import EmailOperator
    
    with airflow.DAG(
      "composer_sample_sendgrid",
      start_date=datetime.datetime(2022, 1, 1),
      schedule_interval="@daily",
      ) as dag:
    
      task_email = EmailOperator(
        task_id='send-email',
        conn_id='sendgrid_default',
        # You can specify more than one recipient with a list.
        to='user@example.com',
        subject='EmailOperator test for SendGrid',
        html_content='This is a test message sent through SendGrid.',
        dag=dag,
        )
    
      task_email
    
  2. Sube el DAG a tu entorno y verifica que la tarea se ejecute de forma correcta.

  3. Accede a SendGrid con tus credenciales de SendGrid.

  4. En la IU de SendGrid, ve a la página Actividad.

  5. Busca el correo electrónico en la lista. Deberías ver que SendGrid procesó y envió el correo electrónico.

  6. Si el correo electrónico no se procesó ni se envió, sigue estos pasos:

    • Verifica la configuración de SendGrid.
    • Verifica que hayas habilitado el backend de Secret Manager. Asegúrate de otorgar permisos adicionales y de anular 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 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.

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 secretos de Airflow.

Una vez que configuras Secret Manager para tu entorno de Composer, puedes almacenar una contraseña de SMTP en Secret Manager:

  1. 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.

  2. 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

¿Qué sigue?