Direkt zum Inhalt

Wie verwende ich Amazon SES als SMTP-Host, um E-Mails von Amazon MWAA DAG-Aufgaben zu senden?

Lesedauer: 3 Minute
0

Ich möchte Amazon Simple Email Service (Amazon SES) als SMTP-Host (Simple Mail Transfer Protocol) verwenden, um E-Mails von einer Directed Acyclic Graph (DAG)-Aufgabe in Amazon Managed Workflows für Apache Airflow (Amazon MWAA) zu senden.

Behebung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI-Version verwendest.

Gehe wie folgt vor, um Amazon SES als SMTP-Host zum Senden von E-Mails von einer DAG-Aufgabe auf Amazon MWAA zu verwenden:

  1. Richte den E-Mail-Versand mit Amazon SES ein.
  2. Erstelle Amazon SES SMTP-Anmeldeinformationen, um E-Mails in Amazon MWAA zu senden.
    Hinweis: Die Anmeldeinformationen für die SMTP-Schnittstelle unterscheiden sich von den Zugriffsschlüsseln, die du mit AWS Identity Access and Management (IAM) für einen SMTP-Benutzer erstellst.
  3. Füge die Apache Airflow-Konfigurationsoptionen der Amazon MWAA-Umgebung hinzu.
  4. Stelle die folgenden Werte für die Konfigurationsoptionen ein:
    Stelle email.email_backend auf airflow.utils.email.send_email_smtp um.
    Stelle smtp.smtp_host auf email-smtp.region.amazonaws.com um.
    Hinweis: Ersetze die Region durch deine AWS-Region.
    Stelle smtp.smtp_starttls auf Falsch um.
    Stelle smtp.smtp_ssl auf Wahr um.
    Stelle smtp.smtp_port auf 587 um.
    Hinweis: Verwende Port 587 für SMTP-Verkehr. Standardmäßig blockiert AWS den ausgehenden SMTP-Verkehr auf Port 25 von allen Amazon Elastic Compute Cloud (Amazon EC2)-Instances. Um ausgehenden Datenverkehr über Port 25 zu senden, sende eine Anfrage, um die Beschränkung aufzuheben.
    Stelle smtp.smtp_mail_from auf die E-Mail-Adresse um.
    Hinweis: Weitere Informationen zu den oben genannten Konfigurationsoptionen findest du unter[email] und [smtp] auf der Apache Airflow-Website.
  5. Erstelle ein AWS Secrets Manager-Geheimnis für den SMTP-Benutzer und eines für das Passwort. Verwende die Amazon SES-SMTP-Anmeldeinformationen aus Schritt 2. Dann konfiguriere ein Startup-Skript, um die Umgebungsvariablen festzulegen.
    Hinweis: Es ist eine bewährte Methode, die SMTP-Anmeldeinformationen in Secrets Manager zu speichern.
  6. Füge das folgende startup.sh-Skript zum Amazon Simple Storage Service (Amazon S3)-Bucket hinzu:
    #!/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"
    
    Hinweis: Die Amazon MWAA-Ausführungsrolle muss berechtigt sein, einzelne vertrauliche Werte abzurufen.
  7. Führe den Befehl update-environment aus, um die Amazon MWAA-Umgebung mit den E-Mail-Konfigurationsoptionen und dem Amazon S3-Pfad für das Startup-Skript zu aktualisieren.

Hinweis: Wenn du die Umgebung erstellst oder aktualisierst, verwenden die Apache Airflow-Callbacks für Erfolg, Fehlschlag und erneuten Versuch die vorherige Konfiguration. Du kannst Aufgaben mit EmailOperator auch zum Senden von E-Mails verwenden. Weitere Informationen findest du unter airflow.operators.email auf der Apache Airflow-Website.