Compartilhar via


Configurar o servidor SMTP no trabalho do Apache Airflow

Observação

O trabalho do Apache Airflow é da plataforma Apache Airflow.

O Apache Airflow inclui um recurso poderoso que permite enviar notificações e alertas por email quando as tarefas falham, são bem-sucedidas ou precisam ser repetidas. Essa funcionalidade é essencial para monitorar seus fluxos de trabalho e solucionar problemas que possam surgir.

Para habilitar notificações e alertas por email, você precisa configurar um servidor SMTP que possa enviar emails em nome do Airflow. O SMTP é um protocolo padrão para enviar e receber emails pela Internet. Você pode usar seu próprio servidor SMTP ou um serviço de terceiros como Outlook, Gmail, SendGrid ou Mailgun. Este artigo demonstra como configurar um servidor SMTP para seu trabalho do Apache Airflow usando o Gmail.

Pré-requisitos

  • Servidor SMTP: você precisa do host SMTP, porta, nome de usuário e senha para seu servidor ou serviço. Se estiver usando o Gmail, crie uma senha de aplicativo para sua conta.

  • Um endereço de email que você deseja usar como remetente das notificações e alertas. Esse endereço de e-mail pode ser o mesmo que seu nome de usuário SMTP ou um endereço diferente se o serviço SMTP permitir.

  • Um ou mais endereços de e-mail para receber as notificações e alertas. Podem ser os seus próprios endereços de e-mail ou os endereços de e-mail dos membros da sua equipe, partes interessadas ou clientes.

Configurar as variáveis de ambiente

  • Depois de preparar os pré-requisitos, você poderá configurar o trabalho do Apache Airflow para usar seu servidor ou serviço SMTP. Edite a seção Airflow configurations com os campos a seguir:

    • AIRFLOW__SMTP__SMTP_HOST: o nome do host ou o endereço IP do servidor ou serviço SMTP.
    • AIRFLOW__SMTP__SMTP_STARTTLS: Indica se deve usar a criptografia TLS (Transport Layer Security) ao se conectar ao seu servidor ou serviço SMTP. Defina essa configuração como True se o servidor ou serviço SMTP oferecer suporte a TLS ou False caso contrário.
    • AIRFLOW__SMTP__SMTP_SSL: Indica se deve usar a criptografia SSL (Secure Sockets Layer) ao se conectar ao seu servidor ou serviço SMTP. Defina essa configuração como True se o servidor ou serviço SMTP exigir SSL ou False caso contrário.
    • AIRFLOW__SMTP__SMTP_USER: o nome de usuário do seu servidor ou serviço SMTP. Esse nome de usuário geralmente é seu endereço de e-mail ou uma chave de API se você estiver usando o SendGrid.
    • AIRFLOW__SMTP__SMTP_PASSWORD: a senha do seu servidor ou serviço SMTP. Essa senha geralmente é sua senha de e-mail ou uma senha de aplicativo se você estiver usando o Gmail.
    • AIRFLOW__SMTP__SMTP_PORT: o número da porta para seu servidor ou serviço SMTP. Essa porta geralmente é 25, 465 ou 587, dependendo do método de criptografia e do serviço SMTP.
    • AIRFLOW__SMTP__SMTP_MAIL_FROM: o endereço de email que você deseja usar como remetente das notificações e alertas. Esse e-mail pode ser o mesmo que seu nome de usuário SMTP ou um diferente se o serviço SMTP permitir.

    Se você estiver usando o Gmail, consulte os seguintes valores.

    Configuração do Airflow Gmail
    AIRFLOW__SMTP__SMTP_HOST smtp.gmail.com
    AIRFLOW__SMTP__SMTP_STARTTLS Verdadeiro
    AIRFLOW__SMTP__SMTP_SSL Falso
    AIRFLOW__SMTP__SMTP_USER your_email@gmail.com
    AIRFLOW__SMTP__SMTP_PASSWORD sua_senha_do_app
    AIRFLOW__SMTP__SMTP_PORT 587
    AIRFLOW__SMTP__SMTP_MAIL_FROM your_email@gmail.com

    A captura de tela apresenta configurações do Airflow para SMTP.

Exemplo: um DAG que envia um email sobre a falha do DAG

   from airflow import DAG
   from airflow.operators.bash_operator import BashOperator
   from airflow.utils.email import send_emailfrom datetime import datetime


   default_args = {
   "owner": "airflow",
   "start_date": datetime(2024, 3, 1),
   "email": ["your_email@gmail.com"], # The email address that you want to receive the notifications and alerts
   "email_on_failure": True,
   "email_on_retry": False,
   "retries": 0
   }

   with DAG(
       "email_callback_test",
       default_args=default_args,
       schedule_interval=None
   ) as dag:

   fail_task = BashOperator(
           task_id="fail_task",
           bash_command="cd fail",
       )

   fail_task

E-mail de exemplo recebido do servidor SMTP

O email contém as seguintes informações:

  • Número de tentativas

  • Erro

  • Log: link que redireciona para os logs de tarefas com falha.

  • Host: nome do host do trabalho do Apache Airflow

  • Host: nome do host do trabalho do Apache Airflow

  • Marcar êxito: link que redireciona para o estado DAG com falha.

    Captura de tela mostrando o pacote privado adicionado como requisito.

Início Rápido: criar um trabalho do Apache Airflow