Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 1)
Auf dieser Seite wird beschrieben, wie Sie Airflow-Verbindungen in Ihrer Umgebung verwalten und von Ihren DAGs aus darauf zugreifen.
Airflow-Verbindungen
In Airflow-Verbindungen werden Anmeldedaten und andere Verbindungsinformationen wie Nutzernamen, Verbindungsstrings und Passwörter gespeichert. Ihre DAGs verwenden Verbindungen, um zu kommunizieren und auf Ressourcen in Google Cloud und anderen Diensten von Ihren DAGs aus zuzugreifen.
Airflow-Operatoren in Ihren DAGs verwenden entweder eine Standardverbindung für den Operator oder Sie geben einen benutzerdefinierten Verbindungsnamen an.
Verbindungssicherheit
Die meisten Airflow-Operatoren akzeptieren keine Anmeldedaten direkt. Stattdessen verwenden sie Airflow-Verbindungen.
Beim Erstellen einer neuen Umgebung generiert Managed Airflow einen eindeutigen, dauerhaften Farnet-Schlüssel für die Umgebung und sichert die Verbindungszustände standardmäßig. Sie können den fernet_key auf der Seite Konfiguration in der
Airflow-UI aufrufen.
Weitere Informationen zum Sichern von Verbindungen und Passwörtern in Airflow finden Sie in der Airflow-Dokumentation unter Verbindungen sichern und Sensible Daten maskieren.
Verbindungstypen
Airflow verwendet Verbindungen verschiedener Typen, um eine Verbindung zu bestimmten Diensten herzustellen. Der Google Cloud Verbindungstyp stellt beispielsweise eine Verbindung zu anderen Diensten in her Google Cloud. Ein weiteres Beispiel: Der S3-Verbindungstyp stellt eine Verbindung zu einem Amazon S3-Bucket her.
Wenn Sie Airflow einen Verbindungstyp hinzufügen möchten,
installieren Sie ein PyPI-Paket mit diesem Verbindungstyp.
Einige Pakete sind in Ihrer Umgebung vorinstalliert. Sie können beispielsweise die Verbindung aus dem Paket apache-airflow-providers-google verwenden, ohne benutzerdefinierte PyPI-Pakete zu installieren.
Vorkonfigurierte Verbindungen
In Managed Airflow werden die folgenden Standardverbindungen in Ihrer Umgebung konfiguriert. Sie können mit diesen Verbindungen auf Ressourcen in Ihrem Projekt zugreifen, ohne sie zu konfigurieren.
google_cloud_defaultbigquery_defaultgoogle_cloud_datastore_defaultgoogle_cloud_storage_default
Verbindung in Secret Manager hinzufügen
Sie können eine Verbindung in Secret Manager speichern, ohne sie Airflow hinzuzufügen. Wir empfehlen, diesen Ansatz zu verwenden, wenn Sie Anmeldedaten und andere vertrauliche Informationen speichern.
So fügen Sie eine Verbindung in Secret Manager hinzu:
Fügen Sie ein Secret mit dem Namen hinzu, der dem Muster für Verbindungen entspricht.
Beispiel:
airflow-connections-example_connection. Verwenden Sie in Ihren DAGs den Verbindungsnamen ohne das Präfix:example_connection.Fügen Sie Parameter für die Verbindung hinzu:
JSON-Format
Fügen Sie die JSON-Darstellung Ihrer Verbindung als Wert des Secrets hinzu. Beispiel:
{ "conn_type": "mysql", "host": "example.com", "login": "login", "password": "password", "port": "9000" }Weitere Informationen zum JSON-Verbindungsformat finden Sie in der Airflow-Dokumentation.
URI-Format
Fügen Sie die URI-Darstellung Ihrer Verbindung als Wert des Secrets hinzu:
Das Secret muss eine URI-Darstellung der Verbindung speichern. Beispiel:
mysql://login:password@example.com:9000.Der URI muss URL-codiert sein. Beispielsweise muss ein Passwort, das ein Leerzeichensymbol enthält, so URL-codiert sein:
mysql://login:secret%20password@example.com:9000.
Airflow bietet eine einfache Methode zum Generieren von Verbindungs-URIs. Ein Beispiel für die Codierung einer komplexen URL mit JSON-Extras finden Sie in der Airflow-Dokumentation.
Prüfen Sie, ob alle Verbindungsparameter korrekt aus Secret Manager gelesen werden.
Verbindung in Airflow hinzufügen
Alternativ zum Speichern von Verbindungen in Secret Manager können Sie sie in Airflow speichern.
So fügen Sie eine Verbindung in Airflow hinzu:
Airflow-Befehlszeile
Führen Sie den
connections add Airflow-Befehlszeilenbefehl
mit der Google Cloud CLI aus. Beispiel:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
connections add -- \
--conn-type "mysql" \
--conn-host "example.com" \
--conn-port "9000" \
--conn-login "login" \
--conn-password "password" \
example_connection
Sie können auch das Argument --conn-uri verwenden:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
connections add -- \
--conn-uri "mysql://login:password@example.com:9000" \
example_connection
Ersetzen Sie Folgendes:
ENVIRONMENT_NAME: der Name Ihrer UmgebungLOCATION: die Region, in der sich die Umgebung befindet
Airflow-UI
Folgen Sie der Airflow-Dokumentation zum Erstellen von Verbindungen.
Prüfen, ob Airflow eine Verbindung korrekt liest
Sie können den Airflow-Befehlszeilenbefehl connections get über die Google Cloud CLI ausführen, um zu prüfen, ob eine Verbindung korrekt gelesen wird. Wenn Sie beispielsweise eine Verbindung in Secret Manager speichern, können Sie so prüfen, ob alle Parameter einer Verbindung von Airflow aus einem Secret gelesen werden.
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
connections get \
-- CONNECTION_NAME
Ersetzen Sie:
ENVIRONMENT_NAMEdurch den Namen der Umgebung.LOCATIONdurch die Region, in der sich die Umgebung befindet.CONNECTION_NAMEdurch den Namen der Verbindung. Wenn Ihre Verbindung in Secret Manager gespeichert ist, verwenden Sie den Verbindungsnamen ohne das Verbindungsprefix. Geben Sie beispielsweiseexample_connectionanstelle vonairflow-connections-example_connection_jsonan.
Beispiel:
gcloud composer environments run example-environment \
--location us-central1 \
connections get \
-- example_connection -o json
Airflow-Verbindungen in Ihren DAGs verwenden
In diesem Abschnitt wird beschrieben, wie Sie von einem DAG aus auf Ihre Verbindung zugreifen.
Secret Manager-Verbindung verwenden
Verwenden Sie den Namen der Verbindung ohne das Präfix. Wenn Ihr Secret
beispielsweise airflow-connections-aws_s3heißt, geben Sie
aws_s3an.
transfer_dir_from_s3 = S3ToGCSOperator(
task_id='transfer_dir_from_s3',
aws_conn_id='aws_s3',
prefix='data-for-gcs',
bucket='example-s3-bucket-transfer-operators',
dest_gcs='gs://us-central1-example-environ-361f4221-bucket/data/from-s3/')
Wenn Sie eine Standardverbindung in Secret Manager speichern, können Sie den Verbindungsnamen weglassen. In der Airflow-Dokumentation finden Sie den Standardverbindungsnamen, der von einem bestimmten Operator verwendet wird. Der Airflow-Operator S3ToGCSOperator verwendet beispielsweise standardmäßig die Verbindung aws_default. Sie können diese Standardverbindung in einem Secret mit dem Namen airflow-connections-aws_default speichern.
In Airflow gespeicherte Verbindung verwenden
Verwenden Sie den Namen der Verbindung, wie er in Airflow definiert ist:
transfer_dir_from_s3 = S3ToGCSOperator(
task_id='transfer_dir_from_s3',
aws_conn_id='aws_s3',
prefix='data-for-gcs',
bucket='example-s3-bucket-transfer-operators',
dest_gcs='gs://us-central1-example-environ-361f4221-bucket/data/from-s3/')
Wenn Sie die Standardverbindung für einen Operator verwenden möchten, lassen Sie den Verbindungsnamen weg. In der Airflow-Dokumentation finden Sie den Standardverbindungsnamen, der von einem bestimmten Operator verwendet wird. Der Airflow-Operator S3ToGCSOperator verwendet beispielsweise standardmäßig die Verbindung aws_default.
Fehlerbehebung
Wenn Ihre Umgebung nicht auf das in Secret Manager gespeicherte Secret zugreifen kann, gehen Sie so vor:
Prüfen Sie, ob Secret Manager in Ihrer Umgebung konfiguriert ist.
Prüfen Sie, ob der Name der Verbindung in Secret Manager mit der von Airflow verwendeten Verbindung übereinstimmt. Für eine Verbindung mit dem Namen
example_connectionlautet der Secret-Name beispielsweiseairflow-connections-example_connection.Prüfen Sie, ob Airflow eine Verbindung korrekt liest.