Configurar notificações por e-mail

Cloud Composer 1 | Cloud Composer 2

Nesta página, você aprenderá a configurar serviços SMTP no ambiente do Cloud Composer.

Antes de começar

Se o ambiente do Cloud Composer estiver configurado com um IP privado, verifique se ele tem conectividade com o endpoint da API do seu serviço de e-mail externo, como https://api.sendgrid.com ou o servidor SMTP de sua preferência.

Configurar serviços de e-mail SendGrid

Para receber notificações, configure as variáveis de ambiente para enviar e-mails por meio do serviço SendGrid.

Inscrever-se no SendGrid

Se você ainda não fez isso, inscreva-se com o SendGrid no Console do Google Cloud e crie uma chave de API. Sendo um desenvolvedor do Google Cloud, é possível começar com 12.000 e-mails gratuitos por mês.

Acessar a API SendGrid Email

Configurar variáveis

O SendGrid precisa usar a chave de API e um endereço de e-mail "De" para enviar e-mails. É possível usar uma das seguintes opções:

  • (Recomendado) Armazene os valores no Gerenciador de secrets.

  • Defina os valores usando as variáveis de ambiente.

Armazenar valores no Secret Manager

Para armazenar valores no Secret Manager:

  1. Instale o pacote PyPI apache-airflow-providers-sendgrid.

  2. Configure o Secret Manager no ambiente. Certifique-se de definir as permissões e opções de configuração do Airflow para o back-end dos secrets.

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

    Seção Chave Valor
    email email_conn_id sendgrid_default
    email email_backend airflow.providers.sendgrid.utils.emailer.send_email
  4. Crie um secret para a conexão do SendGrid chamada airflow-connections-sendgrid_default. Defina o valor do secret& como o URI de conexão. Exemplo:

    sendgrid://username:<sendgrid_api_key>@smtp.sendgrid.net:587
    
  5. Configure o endereço de e-mail para o SendGrid:

    • (Airflow 2.2.4 e versões mais recentes) Crie um secret chamado airflow-variables-from_email. Defina o valor do secret como o endereço de e-mail"De", como noreply@example.com.
    • (versão 2.1.4 a 2.1.3 do Airflow) Defina a seguinte variável para seu ambiente:

      Nome Valor
      SENDGRID_MAIL_FROM O endereço de e-mail do remetente, como noreply@example.com.

Armazenar valores em variáveis de ambiente

Para armazenar valores em variáveis de ambiente:

  1. Defina as variáveis de ambiente a seguir para o ambiente:

    Nome Valor
    SENDGRID_MAIL_FROM O endereço de e-mail do remetente, como noreply@example.com.
    SENDGRID_API_KEY A chave da API SendGrid.

Testar a configuração do SendGrid

Para testar a configuração do SendGrid:

  1. crie um DAG de teste que use EmailOperator; Exemplo:

    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. Faça o upload do DAG para o ambiente e verifique se a tarefa é bem-sucedida.

  3. faça login no SendGrid com as respectivas credenciais;

  4. na IU do SendGrid, acesse a página "Activity";

  5. procure o e-mail na lista. Você verá que o SendGrid processou e entregou o e-mail.

  6. se o e-mail não tiver sido processado e entregue:

    • Verifique a configuração do SendGrid.
    • Verifique se você ativou o back-end do Secret Manager. Verifique se você concedeu permissões extras e definiu substituições para as opções de configuração do Airflow.
    • verifique o filtro de spam no seu cliente de e-mail.

Configurar serviços SMTP de terceiros

Para enviar e-mails por meio de um serviço SMTP de terceiros, substitua a opção de configuração email_backend do Airflow e configure outros parâmetros relacionados a SMTP.

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

Seção Chave Valor
email email_backend airflow.utils.email.send_email_smtp
smtp smtp_host O nome do host do servidor SMTP.
smtp smtp_user O nome de usuário no servidor SMTP.
smtp smtp_port A porta do servidor SMTP. A porta 25 não está disponível. É possível usar outras portas, como as portas SMTP padrão 465 e 587.
smtp smtp_password Não é possível definir uma senha por smtp_password. Para definir uma senha SMTP, siga as instruções em Como configurar uma senha SMTP.
smtp smtp_mail_from O endereço de e-mail do remetente, como noreply-composer@.
smtp smtp_starttls Para mais segurança, defina como True.
smtp smtp_ssl Para mais segurança, defina como True.

Configurar uma senha SMTP para um serviço SMTP de terceiros

Manter uma senha SMTP em texto simples no arquivo de configuração do Airflow é uma prática de segurança ineficiente. É por isso que o Cloud Composer não é compatível com esse método. Em vez disso, é possível usar dois outros métodos para configurar uma senha SMTP.

Usar um comando para recuperar uma senha SMTP

É possível usar uma substituição de configuração para especificar um comando que recebe a senha SMTP. Ao se comunicar com o serviço SMTP, o Airflow usa esse comando para receber o valor da senha.

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

Seção Chave Valor
smtp smtp_password_cmd Especifique um comando que retorne a senha SMTP.

Como usar um secret armazenado no Gerenciador de secrets para recuperar uma senha SMTP

É possível configurar o Secret Manager como back-end de secrets do Airflow.

Depois de configurar o Secret Manager para o ambiente do Composer, é possível armazenar uma senha SMTP no Secret Manager:

  1. Crie um novo secret:

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

    Substitua SMTP_PASSWORD pela senha do SMTP.

  2. Configure o Airflow para receber a senha SMTP do Secret Manager. Para fazer isso, substitua a seguinte opção de configuração do Airflow:

    Seção Chave Valor
    smtp smtp_password_secret smtp-password

A seguir