Airflow-Verbindungen verwalten

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Auf dieser Seite wird beschrieben, wie Sie Airflow-Verbindungen in Ihrer Umgebung verwalten und über Ihre DAGs darauf zugreifen.

Airflow-Verbindungen

In Airflow-Verbindungen werden Anmeldedaten und andere Verbindungsinformationen wie Nutzernamen, Verbindungsstrings und Passwörter gespeichert. Ihre DAGs verwenden Verbindungen, um mit Google Cloud und anderen Diensten zu kommunizieren und auf Ressourcen 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 Anmeldedaten nicht direkt. Stattdessen werden Airflow-Verbindungen verwendet.

Beim Erstellen einer neuen Umgebung generiert Cloud Composer einen eindeutigen, dauerhaften Farnet-Schlüssel für die Umgebung und sichert die Verbindungszustände standardmäßig. Sie können fernet_key auf der Seite Konfiguration in der Airflow-UI aufrufen.

Weitere Informationen zum Schutz von Verbindungen und Passwörtern in Airflow finden Sie in der Airflow-Dokumentation unter Verbindungen sichern und Vertrauliche 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 Google Cloudher. Ein weiteres Beispiel: Der Verbindungstyp „S3-Verbindung“ 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 eine Verbindung aus dem apache-airflow-providers-google-Paket verwenden, ohne benutzerdefinierte PyPI-Pakete zu installieren.

Vorkonfigurierte Verbindungen

Cloud Composer konfiguriert die folgenden Standardverbindungen in Ihrer Umgebung. Sie können diese Verbindungen verwenden, um auf Ressourcen in Ihrem Projekt zuzugreifen, ohne sie konfigurieren zu müssen.

  • google_cloud_default
  • bigquery_default
  • google_cloud_datastore_default
  • google_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, diese Methode zum Speichern von Anmeldedaten und anderen vertraulichen Informationen zu verwenden.

So fügen Sie eine Verbindung in Secret Manager hinzu:

  1. Secret Manager für Ihre Umgebung konfigurieren

  2. 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.

  3. 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:

    • Im Secret muss eine URI-Darstellung der Verbindung gespeichert sein. 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.

  4. Prüfen Sie, ob alle Verbindungsparameter korrekt aus Secret Manager gelesen werden.

Verbindung in Airflow hinzufügen

Alternativ zum Speichern Ihrer 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 Airflow-Befehlszeilenbefehl connections add 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 Umgebung
  • LOCATION: 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 richtig liest

Sie können den Airflow-CLI-Befehl connections get über die Google Cloud CLI ausführen, um zu prüfen, ob eine Verbindung richtig 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_NAME durch den Namen der Umgebung.
  • LOCATION durch die Region, in der sich die Umgebung befindet.
  • CONNECTION_NAME durch den Namen der Verbindung. Wenn Ihre Verbindung in Secret Manager gespeichert ist, verwenden Sie den Verbindungsnamen ohne das Verbindungspräfix. Geben Sie beispielsweise example_connection anstelle von airflow-connections-example_connection_json an.

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 gezeigt, wie Sie über einen DAG 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_s3 heißt, geben Sie aws_s3 an.

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 für einen bestimmten Operator finden Sie den Standardverbindungsnamen, der von einem 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 für einen bestimmten Operator finden Sie den Standardverbindungsnamen, der von einem Operator verwendet wird. Der Airflow-Operator S3ToGCSOperator verwendet beispielsweise standardmäßig die Verbindung aws_default.

Fehlerbehebung

Wenn Ihre Umgebung nicht auf das im Secret Manager gespeicherte Secret zugreifen kann:

  1. Secret Manager muss in Ihrer Umgebung konfiguriert sein.

  2. Prüfen Sie, ob der Name der Verbindung in Secret Manager mit der von Airflow verwendeten Verbindung übereinstimmt. Wenn eine Verbindung beispielsweise example_connection heißt, lautet der Secret-Name airflow-connections-example_connection.

  3. Prüfen Sie, ob Airflow eine Verbindung richtig liest.

Nächste Schritte