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.
Hinweise
- 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.comoder Ihren bevorzugten SMTP-Server).
- Airflow-Komponenten in Umgebungen mit öffentlichen IP-Adressen stellen ausgehende Verbindungen her, einschließlich des Sendens von E-Mail-Nachrichten, von automatisch zugewiesenen öffentlichen IP-Adressen und Ports. Wenn Sie möchten, dass Ihre Umgebungen mit öffentlicher IP E-Mails von bestimmten IP-Adressen und Ports senden, können Sie dies tun, indem Sie ein VPC-Netzwerk mit Ihrer Umgebung verbinden und auf private IP umstellen. Weitere Informationen zu Netzwerken in Cloud Composer 3 finden Sie unter Netzwerktyp der Umgebung ändern. 
- Der Airflow-Planer in Cloud Composer 3 unterstützt nur die folgenden benutzerdefinierten E-Mail-Back-Ends: - airflow.providers.sendgrid.utils.emailer.send_email
- airflow.utils.email.send_email_smtp
 - Wenn Sie ein anderes benutzerdefiniertes E-Mail-Backend konfigurieren, wird diese Konfiguration nicht an den Scheduler weitergegeben. Wenn E-Mails direkt vom Scheduler gesendet werden, reagiert der Scheduler nicht mehr und es kommt wiederholt zu Fehlern. - Airflow-Worker und DAG-Prozessoren unterstützen andere benutzerdefinierte Back-Ends, sodass Sie E‑Mails von diesen Komponenten aus senden können. Ein häufiger Fall, in dem E-Mails direkt vom Scheduler gesendet werden, sind E-Mail-Benachrichtigungen zu DAG-Fehlern. Als Workaround können Sie stattdessen DAG-Fehlerbenachrichtigungen über einen registrierten Callback senden. Sie werden vom DAG-Prozessor gesendet. Sie können auch andere benutzerdefinierte Back-Ends mit Airflow-Operatoren verwenden, die E-Mails senden. In diesem Fall wird die E-Mail von einem Airflow-Worker gesendet, der die Aufgabe verarbeitet. 
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
Wenn Sie sich noch nicht bei SendGrid in der Google Cloud Console angemeldet haben, klicken Sie auf „Beim Anbieter verwalten“, um zur SendGrid-Domain zu gelangen, und klicken Sie 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.
Variablen konfigurieren
SendGrid verwendet den API-Schlüssel und eine „Von“-E-Mail-Adresse zum Senden von E-Mails. Sie können diese Informationen auf eine der folgenden Arten angeben:
Werte in Secret Manager speichern
So speichern Sie Werte in Secret Manager:
- Konfigurieren Sie Secret Manager für Ihre Umgebung. Richten Sie Berechtigungen und Airflow-Konfigurationsoptionen für das Secrets-Backend ein. 
- Ü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
- Erstellen Sie ein Secret für die SendGrid-Verbindung mit dem Namen - airflow-connections-sendgrid_default. Legen Sie den Wert des Secrets auf den 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. 
- 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
- Ü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
- Konfigurieren Sie in Airflow die Verbindung mit dem Namen - sendgrid_default. Geben Sie den SendGrid API-Schlüssel im 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.
 
- 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:
- Erstellen Sie einen Test-DAG, der EmailOperatorverwendet. Beispiel:
- Laden Sie den DAG in Ihre Umgebung hoch und prüfen Sie, ob die Aufgabe erfolgreich war.
- Melden Sie sich bei SendGrid mit Ihren SendGrid-Anmeldedaten an.
- Wechseln Sie in der SendGrid-Benutzeroberfläche zur Seite "Aktivität".
- Durchsuchen Sie die Liste nach der E-Mail. Es sollte nun sichtbar sein, dass SendGrid die E-Mail verarbeitet und zugestellt hat.
- 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_passwordwird 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:
- 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_PASSWORDdurch Ihr SMTP-Passwort.
- 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