E-Mail-Benachrichtigungen konfigurieren

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Auf dieser Seite wird erläutert, wie Sie SMTP-Dienste für Ihre Cloud Composer-Umgebung konfigurieren.

Hinweis

Wenn Ihre Cloud Composer-Umgebung für private IP-Adressen konfiguriert ist, prüfen Sie, ob sie eine Verbindung zum API-Endpunkt für Ihren externen E-Mail-Dienst hat (z. B. https://api.sendgrid.com oder Ihren bevorzugten SMTP-Server).

Airflow-Komponenten in Umgebungen mit öffentlichen IP-Adressen stellen ausgehende Verbindungen her, einschließlich des Sendens von E-Mail-Nachrichten, über automatisch zugewiesene öffentliche IP-Adressen und Ports. Wenn Sie in Ihren Umgebungen mit öffentlichen IP-Adressen E-Mails von vordefinierten IP-Adressen und Ports senden möchten, können Sie ein VPC-Netzwerk mit Ihrer Umgebung verbinden und auf private IP-Adressen umstellen. Weitere Informationen zum Netzwerk in Cloud Composer 3 finden Sie unter Netzwerktyp der Umgebung ändern.

SendGrid-E-Mail-Dienste konfigurieren

Damit Sie Benachrichtigungen erhalten, konfigurieren Sie Ihre Umgebungsvariablen so, dass E-Mails über den SendGrid-E-Mail-Dienst gesendet werden.

Bei SendGrid registrieren

Melden Sie sich bei SendGrid in der Google Cloud Console an, klicken Sie auf „Beim Anbieter verwalten“, um die SendGrid-Domain aufzurufen, und dann auf „Einstellungen“, um Ihren Nutzernamen abzurufen und einen API-Schlüssel zu erstellen. Als Google Cloud -Entwickler können Sie mit 12.000 kostenlosen E-Mails pro Monat beginnen.

Zur SendGrid Email API

Variablen konfigurieren

SendGrid verwendet den API-Schlüssel und eine Absender-E-Mail-Adresse, um E-Mails zu senden. Sie können diese Informationen auf eine der folgenden Arten angeben:

Werte in Secret Manager speichern

So speichern Sie Werte im Secret Manager:

  1. Konfigurieren Sie Secret Manager für Ihre Umgebung. Richten Sie Berechtigungen und Airflow-Konfigurationsoptionen für das Secrets-Backend ein.

  2. Überschreiben Sie die folgenden Airflow-Konfigurationsoptionen:

    Bereich Schlüssel Wert
    email email_conn_id sendgrid_default
    email email_backend airflow.providers.sendgrid.utils.emailer.send_email
  3. Erstellen Sie ein Secret für die SendGrid-Verbindung mit dem Namen airflow-connections-sendgrid_default. Legen Sie den Wert des Geheimnisses auf die Verbindungs-URI fest. Beispiel:

    sendgrid://<username>:<sendgrid_api_key>@smtp.sendgrid.net:587
    

    Weitere Informationen zum Speichern von Verbindungen in Secret Manager finden Sie unter Airflow-Verbindungen verwalten.

  4. Konfigurieren Sie die E-Mail-Adresse für SendGrid. Es ist nicht möglich, die E-Mail-Adresse über ein Secret einzurichten. Überschreiben Sie stattdessen die folgende Airflow-Konfigurationsoption:

    Bereich Schlüssel Wert
    email from_email Die E-Mail-Adresse des Absenders, z. B. noreply@example.com.

Werte in Airflow speichern

  1. Überschreiben Sie die folgenden Airflow-Konfigurationsoptionen:

    Bereich Schlüssel Wert
    email email_conn_id sendgrid_default
    email email_backend airflow.providers.sendgrid.utils.emailer.send_email
  2. Konfigurieren Sie in Airflow die Verbindung mit dem Namen sendgrid_default. Geben Sie den SendGrid API-Schlüssel in der Verbindungs-URI an. Beispiel:

    gcloud composer environments run ENVIRONMENT_NAME \
      --location LOCATION \
      connections add -- \
      --conn-uri "sendgrid://USERNAME:SENDGRID_API_KEY@smtp.sendgrid.net:587" \
      sendgrid_default
    

    Ersetzen Sie Folgendes:

    • ENVIRONMENT_NAME: der Name Ihrer Umgebung
    • LOCATION: die Region, in der sich die Umgebung befindet.
    • USERNAME: der SendGrid-Nutzername.
    • SENDGRID_API_KEY: der SendGrid API-Schlüssel.
  3. Konfigurieren Sie die E-Mail-Adresse für SendGrid. Es ist nicht möglich, die E-Mail-Adresse über ein Secret einzurichten. Überschreiben Sie stattdessen die folgende Airflow-Konfigurationsoption:

    Bereich Schlüssel Wert
    email from_email Die E-Mail-Adresse des Absenders, z. B. noreply@example.com.

SendGrid-Konfiguration testen

So testen Sie die SendGrid-Konfiguration:

  1. Erstellen Sie einen Test-DAG, der EmailOperator verwendet. Beispiel:

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. Laden Sie den DAG in Ihre Umgebung hoch und prüfen Sie, ob die Aufgabe erfolgreich war.
  2. Melden Sie sich bei SendGrid mit Ihren SendGrid-Anmeldedaten an.
  3. Wechseln Sie in der SendGrid-Benutzeroberfläche zur Seite "Aktivität".
  4. Durchsuchen Sie die Liste nach der E-Mail. Es sollte nun sichtbar sein, dass SendGrid die E-Mail verarbeitet und zugestellt hat.
  5. Falls die E-Mail nicht verarbeitet und zugestellt wurde:

    • Überprüfen Sie die SendGrid-Konfiguration.
    • Prüfen Sie, ob Sie das Secret Manager-Backend aktiviert haben. Achten Sie darauf, dass Sie zusätzliche Berechtigungen erteilt und Überschreibungen für Airflow-Konfigurationsoptionen festgelegt haben.
    • Überprüfen Sie den Spamfilter in Ihrem E-Mail-Client.

SMTP-Dienste von Drittanbietern konfigurieren

Zum Senden von E-Mails über den SMTP-Dienst eines Drittanbieters überschreiben Sie die Airflow-Konfigurationsoption email_backend und konfigurieren Sie weitere SMTP-bezogene Parameter.

Zum Konfigurieren eines SMTP-Dienstes eines Drittanbieters überschreiben Sie die folgenden Airflow-Konfigurationsoptionen:

Bereich Schlüssel Wert
email email_backend airflow.utils.email.send_email_smtp
smtp smtp_host Der Hostname für den SMTP-Server.
smtp smtp_user Der Nutzername auf dem SMTP-Server.
smtp smtp_port Der Port für den SMTP-Server. Port 25 ist nicht verfügbar. Sie können auch andere Ports verwenden, z. B. die SMTP-Standardports 465 und 587.
smtp smtp_password Das Festlegen eines Passworts über smtp_password wird nicht unterstützt. Folgen Sie der Anleitung unter SMTP-Passwort konfigurieren, um ein SMTP-Passwort festzulegen.
smtp smtp_mail_from Die E-Mail-Adresse des Absenders, z. B. noreply-composer@.
smtp smtp_starttls Attribut zur Erhöhung der Sicherheit mit True.
smtp smtp_ssl Attribut zur Erhöhung der Sicherheit mit True.

SMTP-Passwort für den SMTP-Dienst eines Drittanbieters konfigurieren

Die Beibehaltung eines SMTP-Passworts als Klartext in der Airflow-Konfigurationsdatei ist nicht empfehlenswert. Deshalb unterstützt Cloud Composer diese Methode nicht. Stattdessen können Sie ein SMTP-Passwort mit zwei anderen Methoden konfigurieren.

SMTP-Passwort mit einem Befehl abrufen

Sie können eine Konfigurationsüberschreibung verwenden, um einen Befehl anzugeben, der das SMTP-Passwort abruft. Bei der Kommunikation mit Ihrem SMTP-Dienst verwendet Airflow diesen Befehl, um den Wert des Passworts abzurufen. Geben Sie einen einzelnen Befehl ohne Bash-Operatoren wie Pipes und Weiterleitungen an.

Um diese Methode zu verwenden, überschreiben Sie die folgende Airflow-Konfigurationsoption:

Bereich Schlüssel Wert
smtp smtp_password_cmd Geben Sie einen Befehl an, der das SMTP-Passwort zurückgibt.

SMTP-Passwort mit einem in Secret Manager gespeicherten Secret abrufen

Sie können Secret Manager als Backend für Airflow-Secrets konfigurieren.

Nachdem Sie Secret Manager für Ihre Composer-Umgebung konfiguriert haben, können Sie ein SMTP-Passwort im Secret Manager speichern:

  1. Erstellen Sie ein neues Secret:

    echo -n "SMTP_PASSWORD" | gcloud beta secrets create \
      airflow-config-smtp-password \
      --data-file=- \
      --replication-policy=automatic
    

    Ersetzen Sie SMTP_PASSWORD durch Ihr SMTP-Passwort.

  2. Konfigurieren Sie Airflow so, dass das SMTP-Passwort vom Secret Manager abgerufen wird. Überschreiben Sie dazu die folgende Airflow-Konfigurationsoption:

    Bereich Schlüssel Wert
    smtp smtp_password_secret smtp-password

Nächste Schritte