Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
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 para IP privado, verifique se ele tem conectividade com o endpoint de API do seu serviço de e-mail externo, como - https://api.sendgrid.comou o servidor SMTP de sua preferência.
- Os componentes do Airflow em ambientes de IP público estabelecem conexões de saída, incluindo o envio de mensagens de e-mail, de endereços IP públicos e portas alocados automaticamente. Se você quiser que os ambientes de IP público enviem e-mails de endereços IP e portas predeterminados, conecte uma rede VPC ao ambiente e mude para IP particular. Para mais informações sobre rede no Cloud Composer 3, consulte Mudar o tipo de rede do ambiente. 
- O programador do Airflow no Cloud Composer 3 é compatível apenas com os seguintes backends de e-mail personalizados: - airflow.providers.sendgrid.utils.emailer.send_email
- airflow.utils.email.send_email_smtp
 - Se você configurar um back-end de e-mail personalizado diferente, essa configuração não será propagada para o programador. Como resultado, o envio de e-mails diretamente do programador faria com que ele não respondesse e falhasse repetidamente. - Os workers do Airflow e os processadores de DAGs são compatíveis com outros back-ends personalizados. Assim, você pode enviar e-mails desses componentes. Um caso comum em que o e-mail é enviado diretamente do programador são os alertas por e-mail sobre falhas de DAG. Como alternativa, você pode enviar alertas de falha do DAG por um callback registrado. Eles serão enviados pelo processador de DAG. Também é possível usar outros back-ends personalizados com operadores do Airflow que enviam e-mails. Nesse caso, o e-mail será enviado de um worker do Airflow que processa a tarefa. 
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 ainda não tiver feito isso, inscreva-se com o SendGrid no console Google Cloud , clique em "Gerenciar no provedor" para acessar o domínio do SendGrid e clique em "Configurações" para recuperar seu nome de usuário e criar uma chave de API. Como desenvolvedor do Google Cloud , você pode começar com 12.000 e-mails gratuitos por mês.
Configurar variáveis
O SendGrid usa a chave de API e um endereço de e-mail "De" para enviar e-mails. Você pode fornecer essas informações com uma das seguintes opções:
Armazenar valores no Secret Manager
Para armazenar valores no Secret Manager:
- Configure o Secret Manager para seu ambiente. Configure as permissões e as opções de configuração do Airflow para o back-end de secrets. 
- 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
- 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- Para mais informações sobre como armazenar conexões no Secret Manager, consulte Gerenciar conexões do Airflow. 
- Configure o endereço de e-mail do SendGrid. Não é possível configurar o endereço de e-mail usando um secret. Em vez disso, substitua a seguinte opção de configuração do Airflow: - Seção - Chave - Valor - email- from_email- O endereço de e-mail "De", como - noreply@example.com.
Armazenar valores no Airflow
- 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
- No Airflow, configure a conexão chamada - sendgrid_default. Especifique a chave de API do Sendgrid no URI de conexão. 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: - ENVIRONMENT_NAME: o nome do ambiente;
- LOCATION: a região em que o ambiente está localizado.
- USERNAME: o nome de usuário do SendGrid.
- SENDGRID_API_KEY: a chave de API do SendGrid.
 
- Configure o endereço de e-mail do SendGrid. Não é possível configurar o endereço de e-mail usando um secret. Em vez disso, substitua a seguinte opção de configuração do Airflow: - Seção - Chave - Valor - email- from_email- O endereço de e-mail "De", como - noreply@example.com.
Testar a configuração do SendGrid
Para testar a configuração do SendGrid:
- crie um DAG de teste que use EmailOperator; Exemplo:
- Faça o upload do DAG para o ambiente e verifique se a tarefa foi concluída.
- faça login no SendGrid com as respectivas credenciais;
- na IU do SendGrid, acesse a página "Activity";
- procure o e-mail na lista. Você vai ver que o SendGrid processou e entregou o e-mail.
- 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. Confira 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 "De", 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 a 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. Especifique um único comando, sem operadores bash, como pipes e redirecionamentos.
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:
- Crie um novo secret: - echo -n "SMTP_PASSWORD" | gcloud beta secrets create \ airflow-config-smtp-password \ --data-file=- \ --replication-policy=automatic- Substitua - SMTP_PASSWORDpela senha do SMTP.
- 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