Configurazione delle notifiche via email

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

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 abbia la connettività all'endpoint API per il tuo servizio email esterno (ad esempio https://api.sendgrid.com o il tuo server SMTP preferito).

  • I componenti Airflow negli ambienti IP pubblici stabiliscono connessioni in uscita, incluso l'invio di messaggi email, da porte e indirizzi IP pubblici allocati automaticamente. Se vuoi che i tuoi ambienti IP pubblico inviino email da indirizzi IP e porte predeterminati, puoi farlo collegando una rete VPC al tuo ambiente e passando all'IP privato. Per ulteriori informazioni sul networking in Cloud Composer 3, vedi Modificare il tipo di networking dell'ambiente.

  • Lo scheduler Airflow in Cloud Composer 3 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 malfunzionamento dello scheduler.

    I worker di Airflow e i processori DAG supportano altri backend personalizzati, quindi puoi inviare email da questi componenti. Un caso comune in cui l'email viene inviata direttamente dallo scheduler sono gli 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, l'email verrà inviata da un worker di Airflow che elabora l'attività.

Configurare i servizi email SendGrid

Per ricevere notifiche, configura le variabili di ambiente per inviare email tramite il servizio email SendGrid.

Registrarsi a SendGrid

Se non l'hai ancora fatto, registrati a SendGrid nella console Google Cloud , fai clic su Gestisci sul provider per andare al dominio SendGrid e fai clic su Impostazioni per recuperare il tuo nome utente e creare una chiave API. In qualità di sviluppatore Google Cloud , puoi iniziare con 12.000 email gratuite al mese.

Vai all'API SendGrid Email

Configurare le variabili

SendGrid utilizza la chiave API e un indirizzo email Mittente 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:

  1. Configura Secret Manager per il tuo ambiente. Assicurati di configurare le autorizzazioni e le opzioni di configurazione di Airflow per il backend dei secret.

  2. 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
  3. 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, vedi Gestione delle connessioni Airflow.

  4. 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
    email from_email L'indirizzo email Da, ad esempio noreply@example.com.

Memorizzare i valori in Airflow

  1. 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
  2. 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 del tuo ambiente.
    • LOCATION: la regione in cui si trova l'ambiente.
    • USERNAME: il nome utente SendGrid.
    • SENDGRID_API_KEY: la chiave API di SendGrid.
  3. 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
    email from_email L'indirizzo email Da, ad esempio noreply@example.com.

Testare la configurazione di SendGrid

Per testare la configurazione di SendGrid:

  1. Crea un DAG di test che utilizza EmailOperator. Ad esempio:

import datetime

import airflow
from airflow.operators.email import EmailOperator


with airflow.DAG(
    "composer_sample_sendgrid",
    start_date=datetime.datetime(2022, 1, 1),
) as dag:
    task_email = EmailOperator(
        task_id="send-email",
        conn_id="sendgrid_default",
        # You can specify more than one recipient with a list.
        to="user@example.com",
        subject="EmailOperator test for SendGrid",
        html_content="This is a test message sent through SendGrid.",
        dag=dag,
    )
  1. Carica il DAG nel tuo ambiente e verifica che l'attività vada a buon fine.
  2. Accedi a SendGrid con le tue credenziali SendGrid.
  3. Nell'interfaccia utente di SendGrid, vai alla pagina Attività.
  4. Cerca l'email nell'elenco. Dovresti vedere che SendGrid ha elaborato e consegnato l'email.
  5. Se l'email non viene elaborata e consegnata:

    • Controlla la configurazione di SendGrid.
    • Verifica di aver abilitato il backend Secret Manager. Assicurati di aver concesso autorizzazioni aggiuntive e impostato gli override per le opzioni di configurazione di Airflow.
    • Controlla il filtro antispam nel tuo client email.

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 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 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 Configurazione di una password SMTP.
smtp smtp_mail_from L'indirizzo email Da, ad esempio noreply-composer@.
smtp smtp_starttls Per una maggiore sicurezza, imposta True.
smtp smtp_ssl Per una maggiore sicurezza, imposta 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 sconsigliata. Per questo motivo Cloud Composer non supporta questo metodo. Puoi invece utilizzare altri due metodi per configurare una password SMTP.

Utilizzo di 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.

Utilizzo di un secret archiviato in Secret Manager per recuperare una password SMTP

Puoi configurare Secret Manager come backend dei secret di Airflow.

Una volta configurato Secret Manager per l'ambiente Composer, puoi archiviare una password SMTP in Secret Manager:

  1. 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 password SMTP.

  2. Configura Airflow per ottenere la password SMTP da Secret Manager. A questo scopo, esegui l'override della seguente opzione di configurazione di Airflow:

    Sezione Chiave Valore
    smtp smtp_password_secret smtp-password

Passaggi successivi