Salta al contenuto

Come posso utilizzare Amazon SES come host SMTP per inviare e-mail da attività DAG in Amazon MWAA?

3 minuti di lettura
0

Desidero utilizzare Amazon Simple Email Service (Amazon SES) come host SMTP (Simple Mail Transfer Protocol) per inviare e-mail da un'attività Directed Acyclic Graph (DAG) in Flusso di lavoro gestito da Amazon per Apache Airflow (Amazon MWAA) (Amazon MWAA).

Risoluzione

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Per utilizzare Amazon SES come host SMTP per inviare e-mail da un'attività DAG in Amazon MWAA, completa i seguenti passaggi:

  1. Configura l'invio di e-mail con Amazon SES.
  2. Crea le credenziali SMTP di Amazon SES per inviare e-mail in Amazon MWAA.
    Nota: le credenziali dell'interfaccia SMTP sono diverse dalle chiavi di accesso create con AWS Identity Access and Management (AWS IAM) per un utente SMTP.
  3. Collega le opzioni di configurazione di Apache Airflow all'ambiente Amazon MWAA.
  4. Imposta i seguenti valori per le opzioni di configurazione:
    Imposta email.email_backend su airflow.utils.email.send_email_smtp.
    Imposta smtp.smtp_host su email-smtp.region.amazonaws.com.
    Nota: sostituisci region con la tua Regione AWS.
    Imposta smtp.smtp_starttls su False.
    Imposta smtp.smtp_ssl su True.
    Imposta smtp.smtp_port su 587.
    Nota: utilizza la porta 587 per il traffico SMTP. Per impostazione predefinita, AWS blocca il traffico SMTP in uscita sulla porta 25 da tutte le istanze Amazon Elastic Compute Cloud (Amazon EC2). Per inviare traffico in uscita sulla porta 25, invia una richiesta per rimuovere la restrizione.
    Imposta smtp.smtp_mail_from sul tuo indirizzo e-mail.
    Nota: per ulteriori informazioni sulle opzioni di configurazione precedenti, consulta [email] e [smtp] sul sito web di Apache Airflow.
  5. Crea un segreto in AWS Secrets Manager per l'utente SMTP e uno per la password. Utilizza le credenziali SMTP di Amazon SES descritte nella fase 2. Quindi configura uno script di avvio per impostare le variabili di ambiente.
    Nota: è consigliabile archiviare le credenziali SMTP in Secrets Manager.
  6. Aggiungi il seguente script startup.sh al bucket Amazon Simple Storage Service (Amazon S3):
    #!/bin/sh  
    # Get the SMTP username and password from secrets manager
    username=$(aws secretsmanager get-secret-value --secret-id airflow/variables/smtp.smtp_user --query SecretString --output text)
    password=$(aws secretsmanager get-secret-value --secret-id airflow/variables/smtp.smtp_password --query SecretString --output text)
    
    # Set the SMTP Environment variables with the username and password retrieved from Secrets Manager
    export AIRFLOW__SMTP__SMTP_USER=$username
    export AIRFLOW__SMTP__SMTP_PASSWORD=$password
    
    # Print the SMTP user
    echo "SMTP user is $AIRFLOW__SMTP__SMTP_USER"
    Nota: il ruolo di esecuzione di Amazon MWAA deve avere l'autorizzazione per recuperare singoli valori dei segreti.
  7. Per aggiornare l'ambiente Amazon MWAA con le opzioni di configurazione dell'e-mail e il percorso di Amazon S3 per lo script di avvio, esegui questo comando AWS CLI update-environment:
    aws mwaa update-environment --name environment_name --startup-script-s3-path s3_path_for_startup_script
    Nota: sostituisci environment_name con il nome del tuo ambiente e s3_path_for_startup_script con il percorso di S3 per il tuo script di avvio.

Quando crei o aggiorni l'ambiente, i callback di Apache Airflow per l'esito positivo, l'esito negativo e la ripetizione utilizzano la configurazione precedente. Puoi anche utilizzare attività con EmailOperator per inviare e-mail. Per ulteriori informazioni, consulta airflow.providers.smtp.operators.smtp sul sito web Apache Airflow.