Configure as notificações por email

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Esta página explica como configurar os serviços SMTP para o seu ambiente do Cloud Composer.

Antes de começar

  • Se o seu ambiente do Cloud Composer estiver configurado para IP privado, certifique-se de que tem conetividade com o ponto final da API para o seu serviço de email externo (como o https://api.sendgrid.com ou o seu servidor SMTP preferido).

Configure os serviços de email do SendGrid

Para receber notificações, configure as variáveis de ambiente para enviar emails através do serviço de email SendGrid.

Inscreva-se no SendGrid

Se ainda não o fez, inscreva-se no SendGrid na Google Cloud consola, clique em Gerir no fornecedor para aceder ao domínio do SendGrid e clique em Definições para obter o seu nome de utilizador e criar uma chave de API. Enquanto Google Cloud programador, pode começar com 12 000 emails gratuitos por mês.

Aceda à API SendGrid Email

Configure variáveis

O SendGrid usa a chave da API e um endereço de email De para enviar correio. Pode fornecer estas informações com uma das seguintes opções:

  • (Recomendado) Armazene valores no Secret Manager

  • Armazene valores no Airflow

Armazene valores no Secret Manager

Para armazenar valores no Secret Manager:

  1. Configure o Secret Manager para o seu ambiente. Certifique-se de que configura as autorizações e as opções de configuração do Airflow para o back-end de segredos.

  2. Substitua as seguintes opções de configuração do Airflow:

    Secção Chave Valor
    email email_conn_id sendgrid_default
    email email_backend airflow.providers.sendgrid.utils.emailer.send_email
  3. Crie um segredo para a ligação do SendGrid com o nome airflow-connections-sendgrid_default. Defina o valor do segredo como o URI de ligação. Por exemplo:

    sendgrid://<username>:<sendgrid_api_key>@smtp.sendgrid.net:587
    

    Para mais informações sobre o armazenamento de associações no Secret Manager, consulte o artigo Faça a gestão das associações do Airflow.

  4. Configure o endereço de email para o SendGrid. Não é possível configurar o endereço de email através de um segredo. Em alternativa, substitua a seguinte opção de configuração do Airflow:

    Secção Chave Valor
    email from_email O endereço de email De, como noreply@example.com.

Armazene valores no Airflow

  1. Substitua as seguintes opções de configuração do Airflow:

    Secção Chave Valor
    email email_conn_id sendgrid_default
    email email_backend airflow.providers.sendgrid.utils.emailer.send_email
  2. No Airflow, configure a associação denominada sendgrid_default. Especifique a chave da API Sendgrid no URI de ligação. Por exemplo:

    gcloud composer environments run ENVIRONMENT_NAME \
      --location LOCATION \
      connections add -- \
      --conn-uri "sendgrid://USERNAME:SENDGRID_API_KEY@smtp.sendgrid.net:587" \
      sendgrid_default
    

    Substitua o seguinte:

    • ENVIRONMENT_NAME: o nome do seu ambiente.
    • LOCATION: a região onde o ambiente está localizado.
    • USERNAME: o nome de utilizador do SendGrid.
    • SENDGRID_API_KEY: a chave da API SendGrid.
  3. Configure o endereço de email para o SendGrid. Não é possível configurar o endereço de email através de um segredo. Em alternativa, substitua a seguinte opção de configuração do Airflow:

    Secção Chave Valor
    email from_email O endereço de email De, como noreply@example.com.

Teste a configuração do SendGrid

Para testar a configuração do SendGrid:

  1. Crie um DAG de teste que use o EmailOperator. Por exemplo:

import datetime

import airflow
from airflow.operators.email import EmailOperator


with airflow.DAG(
    "composer_sample_sendgrid",
    start_date=datetime.datetime(2022, 1, 1),
) 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,
    )
  1. Carregue o DAG para o seu ambiente e verifique se a tarefa é concluída com êxito.
  2. Inicie sessão no SendGrid com as suas credenciais do SendGrid.
  3. Na IU do SendGrid, aceda à página Atividade.
  4. Pesquise o email na lista. Deverá ver que o SendGrid processou e entregou o email.
  5. Se o email não for processado nem entregue:

    • Verifique a configuração do SendGrid.
    • Confirme se ativou o back-end do Gestor Secreto. Certifique-se de que concedeu autorizações adicionais e definiu substituições para as opções de configuração do Airflow.
    • Verifique o filtro de spam no seu cliente de email.

Configure serviços SMTP de terceiros

Para enviar emails através de um serviço SMTP de terceiros, substitua a opção de configuração do email_backend Airflow e configure outros parâmetros relacionados com o SMTP.

Para configurar um serviço SMTP de terceiros, substitua as seguintes opções de configuração do Airflow:

Secção Chave Valor
email email_backend airflow.utils.email.send_email_smtp
smtp smtp_host O nome do anfitrião do servidor SMTP.
smtp smtp_user O nome de utilizador no servidor SMTP.
smtp smtp_port A porta do servidor SMTP. A porta 25 não está disponível. Pode usar outras portas, como as portas SMTP padrão 465 e 587.
smtp smtp_password A definição de uma palavra-passe através de smtp_password não é suportada. Para definir uma palavra-passe SMTP, siga as instruções fornecidas em Configurar uma palavra-passe SMTP.
smtp smtp_mail_from O endereço de email De, como noreply-composer@.
smtp smtp_starttls Para maior segurança, defina a opção como True.
smtp smtp_ssl Para maior segurança, defina a opção como True.

Configure uma palavra-passe SMTP para um serviço SMTP de terceiros

Manter uma palavra-passe SMTP em texto simples no ficheiro de configuração do Airflow é uma má prática de segurança. É por isso que o Cloud Composer não suporta este método. Em alternativa, pode usar outros dois métodos para configurar uma palavra-passe SMTP.

Usar um comando para obter a palavra-passe SMTP

Pode usar uma substituição de configuração para especificar um comando que obtenha a palavra-passe SMTP. Quando comunica com o seu serviço SMTP, o Airflow usa este comando para obter o valor da palavra-passe. Especifique um único comando, sem operadores bash, como pipes e redirecionamentos.

Para usar este método, substitua a seguinte opção de configuração do Airflow:

Secção Chave Valor
smtp smtp_password_cmd Especifique um comando que devolva a palavra-passe SMTP.

Usar um segredo armazenado no Secret Manager para obter uma palavra-passe SMTP

Pode configurar o Secret Manager como o backend de segredos do Airflow.

Depois de configurar o Secret Manager para o seu ambiente do Composer, pode armazenar uma palavra-passe SMTP no Secret Manager:

  1. Crie um novo segredo:

    echo -n "SMTP_PASSWORD" | gcloud beta secrets create \
      airflow-config-smtp-password \
      --data-file=- \
      --replication-policy=automatic
    

    Substitua SMTP_PASSWORD pela sua palavra-passe SMTP.

  2. Configure o Airflow para obter a palavra-passe SMTP do Secret Manager. Para tal, substitua a seguinte opção de configuração do Airflow:

    Secção Chave Valor
    smtp smtp_password_secret smtp-password

O que se segue?