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.
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:
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 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.
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 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 UmgebungLOCATION
: 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
EmailOperator
verwendet. 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_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:
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.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