Managed Airflow (terza generazione) | Managed Airflow (seconda generazione) | Managed Airflow (prima generazione legacy)
Questa pagina spiega come configurare i servizi SMTP per l'ambiente Airflow gestito.
Prima di iniziare
Se l'ambiente Airflow gestito è configurato per l'IP privato, assicurati che abbia la connettività all'endpoint API per il servizio email esterno (ad esempio
https://api.sendgrid.com, o il server SMTP preferito).I componenti Airflow negli ambienti IP pubblici stabiliscono connessioni in uscita, incluso l'invio di email, da indirizzi IP pubblici e porte allocati automaticamente. Se vuoi che i tuoi ambienti IP pubblici inviino email da indirizzi IP e porte predeterminati, puoi farlo tramite il collegamento di una rete VPC al tuo ambiente e il passaggio all'IP privato. Per saperne di più sul networking in Managed Airflow (terza generazione), consulta Modificare il tipo di networking dell'ambiente.
Lo scheduler Airflow in Managed Airflow (terza generazione) supporta solo i seguenti backend email personalizzati:
- airflow.providers.sendgrid.utils.emailer.send_email
- airflow.utils.email.send_email_smtp
Se configuri un backend email personalizzato diverso, questa configurazione non verrà propagata allo scheduler. Di conseguenza, l'invio di email direttamente dallo scheduler comporterebbe la mancata risposta e il ripetuto errore dello scheduler.
I worker Airflow e i processori DAG supportano altri backend personalizzati, quindi puoi inviare email da questi componenti. Un caso comune in cui le email vengono inviate direttamente dallo scheduler è quello degli avvisi via email relativi agli errori DAG. Come soluzione alternativa, puoi inviare avvisi di errore DAG tramite un callback registrato. Verranno inviati dal processore DAG. Puoi anche utilizzare altri backend personalizzati con gli operatori Airflow che inviano email. In questo caso, le email verranno inviate da un worker Airflow che elabora l'attività.
Configurare i servizi email di SendGrid
Per ricevere le notifiche, configura le variabili di ambiente in modo da inviare email tramite il servizio email di SendGrid.
Registrarsi a SendGrid
Se non l'hai ancora fatto, registrati a SendGrid in Google Cloud console, fai clic su Gestisci sul fornitore per andare al dominio SendGrid e fai clic su Impostazioni per recuperare il nome utente e creare una chiave API. Come Google Cloud sviluppatore, puoi iniziare con 12.000 email senza costi al mese.
Configurazione delle variabili
SendGrid utilizza la chiave API e un indirizzo email Da per l'invio di posta. Puoi fornire queste informazioni con una delle seguenti opzioni:
Archiviare i valori in Secret Manager
Per archiviare i valori in Secret Manager:
Configura Secret Manager per il tuo ambiente. Assicurati di configurare le autorizzazioni e le opzioni di configurazione di Airflow per il backend dei secret.
Esegui l'override delle seguenti opzioni di configurazione di Airflow:
Sezione Chiave Valore emailemail_conn_idsendgrid_defaultemailemail_backendairflow.providers.sendgrid.utils.emailer.send_emailCrea un secret per la connessione SendGrid denominata
airflow-connections-sendgrid_default. Imposta il valore del secret sull'URI di connessione. Ad esempio:sendgrid://<username>:<sendgrid_api_key>@smtp.sendgrid.net:587Per saperne di più sull'archiviazione delle connessioni in Secret Manager, consulta Gestire le connessioni Airflow.
Configura l'indirizzo email per SendGrid. Non è possibile configurare l'indirizzo email tramite un secret. Esegui invece l'override della seguente opzione di configurazione di Airflow:
Sezione Chiave Valore emailfrom_emailL'indirizzo email Da, ad esempio noreply@example.com.
Archiviare i valori in Airflow
Esegui l'override delle seguenti opzioni di configurazione di Airflow:
Sezione Chiave Valore emailemail_conn_idsendgrid_defaultemailemail_backendairflow.providers.sendgrid.utils.emailer.send_emailIn Airflow, configura la connessione denominata
sendgrid_default. Specifica la chiave API SendGrid nell'URI di connessione. Ad esempio:gcloud composer environments run ENVIRONMENT_NAME \ --location LOCATION \ connections add -- \ --conn-uri "sendgrid://USERNAME:SENDGRID_API_KEY@smtp.sendgrid.net:587" \ sendgrid_defaultSostituisci quanto segue:
ENVIRONMENT_NAME: il nome dell'ambiente.LOCATION: la regione in cui si trova l'ambiente.USERNAME: il nome utente SendGrid.SENDGRID_API_KEY: la chiave API SendGrid.
Configura l'indirizzo email per SendGrid. Non è possibile configurare l'indirizzo email tramite un secret. Esegui invece l'override della seguente opzione di configurazione di Airflow:
Sezione Chiave Valore emailfrom_emailL'indirizzo email Da, ad esempio noreply@example.com.
Testare la configurazione di SendGrid
Per testare la configurazione di SendGrid:
- Crea un DAG di test che utilizzi
EmailOperator. Ad esempio:
- Carica il DAG nel tuo ambiente e verifica che l'attività vada a buon fine.
- Accedi a SendGrid in con le tue credenziali SendGrid.
- Nell'interfaccia utente di SendGrid, vai alla pagina Attività.
- Cerca l'email nell'elenco. Dovresti vedere che SendGrid ha elaborato e recapitato l'email.
Se l'email non viene elaborata e recapitata:
- Controlla la configurazione di SendGrid.
- Verifica di aver attivato il backend Secret Manager. Assicurati di aver concesso autorizzazioni aggiuntive e di aver impostato gli override per le opzioni di configurazione di Airflow.
- Controlla il filtro antispam nel tuo client di posta.
Configurare i servizi SMTP di terze parti
Per inviare email tramite un servizio SMTP di terze parti,
esegui l'override dell'opzione di configurazione di Airflow email_backend
e configura altri parametri correlati a SMTP.
Per configurare un servizio SMTP di terze parti, esegui l'override delle seguenti opzioni di configurazione di Airflow:
| Sezione | Chiave | Valore |
|---|---|---|
email |
email_backend |
airflow.utils.email.send_email_smtp |
smtp |
smtp_host |
Il nome host del server SMTP. |
smtp |
smtp_user |
Il nome utente sul server SMTP. |
smtp |
smtp_port |
La porta del server SMTP. La porta 25 non è disponibile. Puoi utilizzare altre porte, ad esempio le porte SMTP standard 465 e 587. |
smtp |
smtp_password |
L'impostazione di una password tramite smtp_password non è supportata. Per impostare una password SMTP, segui le istruzioni fornite in Configurare una password SMTP. |
smtp |
smtp_mail_from |
L'indirizzo email Da, ad esempio noreply-composer@. |
smtp |
smtp_starttls |
Per una maggiore sicurezza, imposta su True. |
smtp |
smtp_ssl |
Per una maggiore sicurezza, imposta su True. |
Configurare una password SMTP per un servizio SMTP di terze parti
Mantenere una password SMTP in testo normale nel file di configurazione di Airflow è una pratica di sicurezza errata. Ecco perché Managed Airflow non supporta questo metodo. In alternativa, puoi utilizzare altri due metodi per configurare una password SMTP.
Utilizzare un comando per recuperare la password SMTP
Puoi utilizzare un override della configurazione per specificare un comando che ottiene la password SMTP. Quando comunica con il servizio SMTP, Airflow utilizza questo comando per ottenere il valore della password. Specifica un singolo comando, senza operatori bash come pipe e reindirizzamenti.
Per utilizzare questo metodo, esegui l'override della seguente opzione di configurazione di Airflow:
| Sezione | Chiave | Valore |
|---|---|---|
smtp |
smtp_password_cmd |
Specifica un comando che restituisce la password SMTP. |
Utilizzare un secret archiviato in Secret Manager per recuperare una password SMTP
Puoi configurare Secret Manager come backend dei secret di Airflow.
Dopo aver configurato Secret Manager per l'ambiente Composer, puoi archiviare una password SMTP in Secret Manager:
Crea un nuovo secret:
echo -n "SMTP_PASSWORD" | gcloud beta secrets create \ airflow-config-smtp-password \ --data-file=- \ --replication-policy=automaticSostituisci
SMTP_PASSWORDcon la tua password SMTP.Configura Airflow in modo che ottenga la password SMTP da Secret Manager. Per farlo, esegui l'override della seguente opzione di configurazione di Airflow. Airflow antepone automaticamente il
airflow-config-prefisso al valore specificato persmtp_password_secretquando recupera ilairflow-config-smtp-passwordsecret da Secret Manager.Sezione Chiave Valore smtpsmtp_password_secretsmtp-password