Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
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 for
configurado para IP privado, verifique se ele tem conectividade
ao endpoint de 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.
Inscreva-se no SendGrid
Se ainda não tiver feito isso, inscreva-se no SendGrid no console do 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. Sendo um desenvolvedor do Google Cloud, é possível começar com 12.000 e-mails gratuitos por mês.
Configurar variáveis
O SendGrid usa a chave da API e um endereço de e-mail de origem para enviar e-mails. É possível fornecer essas informações com uma das seguintes opções:
(Recomendado) Armazene valores no Secret Manager.
Armazenar valores no Airflow.
Armazenar valores no Secret Manager
Para armazenar valores no Secret Manager:
Configure o Secret Manager para o ambiente. Defina as permissões e as opções de configuração do Airflow para o back-end de segredos.
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 chamado
airflow-connections-sendgrid_default
: Defina o valor do secret como 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 para o SendGrid:
(Airflow 2.2.4 e versões posteriores) Não é possível configurar o usando um secret. Em vez disso, modifique a seguinte opção de configuração do Airflow:
Seção Chave Valor email
from_email
O endereço de e-mail do remetente, como noreply@example.com
.(versões do Airflow 2.1.4 a 2.1.3) Defina a seguinte variável de ambiente para seu ambiente:
Nome Valor SENDGRID_MAIL_FROM
O endereço de e-mail do remetente, 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 chamado
sendgrid_default
. Especifique a chave da API 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 da API SendGrid.
Configure o endereço de e-mail para o SendGrid:
(Airflow 2.2.4 e versões mais recentes) 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
.(versões do Airflow 2.1.4 a 2.1.3) Defina a seguinte variável de ambiente para seu ambiente:
Nome Valor SENDGRID_MAIL_FROM
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 upload do DAG para seu ambiente e verifique se que a tarefa seja bem-sucedida.
- 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 notar 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. Marca verifique se você concedeu permissões extras e definiu substituições para o Airflow de configuração do Terraform.
- 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 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. Especifique um único comando, sem Operadores bash, como pipes e redirecionamentos.
Para usar esse método, substitua o seguinte código do Airflow opção de configuração:
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_PASSWORD
pela 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