Cloud Composer 1 | Cloud Composer 2
Questa pagina spiega come configurare i servizi SMTP per il tuo ambiente Cloud Composer.
Prima di iniziare
Se il tuo ambiente Cloud Composer è configurato per l'IP privato, assicurati che sia connesso all'endpoint API per il tuo servizio email esterno (ad esempio https://api.sendgrid.com
o il tuo server SMTP preferito).
Configurare i servizi email di SendGrid
Per ricevere le notifiche, configura le variabili di ambiente per inviare email tramite il servizio email SendGrid.
Registrati a SendGrid
Se non l'hai ancora fatto, registrati a SendGrid nella console Google Cloud, fai clic su Manage On Provider (Gestisci su provider) per accedere al dominio SendGrid, quindi fai clic su Settings (Impostazioni) per recuperare il nome utente e creare una chiave API. In qualità di sviluppatore Google Cloud, puoi iniziare con 12.000 email gratuite al mese.
Configura variabili
SendGrid utilizza la chiave API e un indirizzo email Da per l'invio della posta. Puoi fornire queste informazioni con una delle seguenti opzioni:
(Consigliato) Archivia i valori in Secret Manager.
Archivia valori in Airflow.
Archivia valori in Secret Manager
Per archiviare i valori in Secret Manager:
Installa il pacchetto PyPI
apache-airflow-providers-sendgrid
.Configura Secret Manager per il tuo ambiente. Assicurati di impostare 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 email
email_conn_id
sendgrid_default
email
email_backend
airflow.providers.sendgrid.utils.emailer.send_email
Crea un secret per la connessione SendGrid denominato
airflow-connections-sendgrid_default
. Imposta il valore del secret sull'URI di connessione. Ad esempio:sendgrid://<username>:<sendgrid_api_key>@smtp.sendgrid.net:587
Per ulteriori informazioni sull'archiviazione delle connessioni in Secret Manager, consulta Gestire le connessioni Airflow.
Configura l'indirizzo email per SendGrid:
(Airflow 2.2.4 e versioni successive) Non è possibile configurare l'indirizzo email tramite un secret. Puoi invece eseguire l'override della seguente opzione di configurazione di Airflow:
Sezione Chiave Valore email
from_email
L'indirizzo email Da, ad esempio noreply@example.com
.(Versioni di Airflow da 2.1.4 a 2.1.3) Imposta la seguente variabile di ambiente per il tuo ambiente:
Nome Valore SENDGRID_MAIL_FROM
L'indirizzo email Da, ad esempio noreply@example.com
.
Archivia valori in Airflow
Esegui l'override delle seguenti opzioni di configurazione di Airflow:
Sezione Chiave Valore email
email_conn_id
sendgrid_default
email
email_backend
airflow.providers.sendgrid.utils.emailer.send_email
In 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_default
Sostituisci quanto segue:
ENVIRONMENT_NAME
: il nome dell'ambiente.LOCATION
: la regione in cui si trova l'ambiente.USERNAME
: il nome utente di SendGrid.SENDGRID_API_KEY
: la chiave API SendGrid.
Configura l'indirizzo email per SendGrid:
(Airflow 2.2.4 e versioni successive) Esegui l'override della seguente opzione di configurazione di Airflow:
Sezione Chiave Valore email
from_email
L'indirizzo email Da, ad esempio noreply@example.com
.(Versioni di Airflow da 2.1.4 a 2.1.3) Imposta la seguente variabile di ambiente per il tuo ambiente:
Nome Valore SENDGRID_MAIL_FROM
L'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à abbia esito positivo.
- Accedi a SendGrid con le tue credenziali di SendGrid.
- Nell'interfaccia utente di SendGrid, vai alla pagina Attività.
- Cerca l'email nell'elenco. Dovresti vedere che SendGrid ha elaborato e consegnato l'email.
Se l'email non viene elaborata e recapitata:
- Controlla la configurazione di SendGrid.
- Verifica di aver abilitato il backend di Secret Manager. Assicurati di aver concesso autorizzazioni aggiuntive e di impostare gli override per le opzioni di configurazione di Airflow.
- Controlla il filtro antispam nel tuo client di posta.
Configurare 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 relativi 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 per il 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 maggiore sicurezza, imposta il valore su True . |
smtp |
smtp_ssl |
Per maggiore sicurezza, imposta il valore 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 prassi di sicurezza scadente. Ecco perché Cloud Composer non supporta questo metodo. Puoi utilizzare invece altri due metodi per configurare una password SMTP.
Utilizzo di un comando per recuperare una password SMTP
Puoi utilizzare una sostituzione di configurazione per specificare un comando che ottenga la password SMTP. Durante la comunicazione 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 restituisca la password SMTP. |
Utilizzo di un secret memorizzato in Secret Manager per recuperare una password SMTP
Puoi configurare Secret Manager come backend dei secret di Airflow.
Dopo aver configurato Secret Manager per il tuo 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=automatic
Sostituisci
SMTP_PASSWORD
con la tua password SMTP.Configura Airflow per ottenere la password SMTP da Secret Manager. Per farlo, esegui l'override della seguente opzione di configurazione di Airflow:
Sezione Chiave Valore smtp
smtp_password_secret
smtp-password