Lokale Airflow-Umgebung mit dem lokalen Entwicklungs-CLI-Tool von Composer ausführen

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

In diesem Abschnitt wird beschrieben, wie Sie eine lokale Airflow-Umgebung mit dem lokalen Entwicklungs-CLI von Composer erstellen, konfigurieren und ausführen.

Informationen zum lokalen Entwicklungs-CLI-Tool von Composer

Das lokale Entwicklungs-CLI-Tool von Composer optimiert die Apache Airflow-DAG-Entwicklung für Cloud Composer, indem Sie eine Airflow-Umgebung lokal ausführen. Dieses Die lokale Airflow-Umgebung verwendet das Image einer bestimmten Cloud Composer-Umgebung. Version.

Sie können eine lokale Airflow-Umgebung auf Basis eines Cloud Composer-Umgebung. In diesem Fall hat der lokale Airflow Umgebung übernimmt die Liste der installierten PyPI-Pakete und der Umgebungsvariable Namen aus Ihrer Cloud Composer-Umgebung.

Sie können diese lokale Airflow-Umgebung für Tests und Entwicklung verwenden z. B. um neuen DAG-Code, PyPI-Pakete oder Airflow-Konfiguration zu testen Optionen.

Hinweise

  • Das lokale Entwicklungs-CLI-Tool von Composer erstellt lokale Airflow-Umgebungen in einer Verzeichnis, in dem Sie den Befehl composer-dev create ausführen. So greifen Sie auf Ihr lokalen Airflow-Umgebung zu erstellen, führen Sie die Befehle des Tools unter dem Pfad aus, haben Sie anfangs die lokale Umgebung erstellt. Alle Daten für die die lokale Umgebung in einem Unterverzeichnis unter dem Pfad gespeichert ist, in dem Sie Lokale Umgebung: ./composer/<local_environment_name>.

  • Auf dem Computer muss genügend Speicherplatz vorhanden sein, um Cloud Composer zu speichern Bilder. Das lokale Entwicklungs-CLI-Tool von Composer speichert eine Image-Datei pro Cloud Composer-Version. Wenn Sie z. B. zwei lokale Airflow-Umgebungen mit verschiedenen Cloud Composer-Versionen Das lokale Entwicklungs-CLI-Tool von Composer speichert zwei Cloud Composer-Komponenten Bilder.

  • Das lokale Entwicklungs-Befehlszeilentool von Composer verwendet eine kolorierte Ausgabe. Sie können Folgendes deaktivieren: farbige Ausgabe mit der Variablen NO_COLOR=1: NO_COLOR=1 composer-dev <other commands>.

  • Wenn Sie nur eine lokale Umgebung haben, können Sie die Name aus allen composer-dev-Befehlen mit Ausnahme von run-airflow-cmd.

  • Installieren Sie die Abhängigkeiten des lokalen Entwicklungs-Befehlszeilentools für Composer:

  • Installieren Sie Docker. Docker muss die auf dem lokalen System installiert sind und ausgeführt werden. Um zu prüfen, ob Docker können Sie einen beliebigen Docker-Kommandozeilenbefehl wie docker ps ausführen.

Anmeldedaten konfigurieren

Falls nicht bereits geschehen, Rufen Sie neue Nutzeranmeldedaten zur Verwendung als Standardanmeldedaten für Anwendungen ab:

gcloud auth application-default login

Melden Sie sich mit Ihrem Google-Konto in der gcloud CLI an:

gcloud auth login

Alle API-Aufrufe des Composer Local Development CLI-Tool und DAGs sind über das Konto ausgeführt, das Sie in der gcloud CLI verwenden. Für wenn ein DAG in Ihrer lokalen Airflow-Umgebung Inhalte eines Cloud Storage-Bucket haben, muss dieses Konto folgende Berechtigungen haben: auf den Bucket zugreifen können. Dies unterscheidet sich von Cloud Composer. Umgebungen, in denen das Dienstkonto einer Umgebung die Aufrufe vornimmt.

CLI-Tool für lokale Entwicklung von Composer installieren

Klonen Sie das CLI-Repository für die lokale Entwicklung von Composer:

git clone https://github.com/GoogleCloudPlatform/composer-local-dev.git

Führen Sie im obersten Verzeichnis des geklonten Repositorys folgenden Befehl aus:

pip install .

Der Pfad, unter dem das Tool installiert ist, hängt von Ihrer pip-Konfiguration ab ist möglicherweise nicht in der Variablen PATH enthalten. Ist dies der Fall, zeigt pip eine Warnung an. angezeigt. Sie können die Informationen aus dieser Warnmeldung verwenden, um Folgendes hinzuzufügen: in die Variable PATH in Ihrem Betriebssystem.

Lokale Airflow-Umgebung mit einer bestimmten Cloud Composer-Version erstellen

Führen Sie folgenden Befehl aus, um die verfügbaren Versionen von Cloud Composer aufzulisten:

composer-dev list-available-versions --include-past-releases --limit 10

Führen Sie folgenden Befehl aus, um eine lokale Airflow-Umgebung mit Standardparametern zu erstellen:

composer-dev create \
  --from-image-version IMAGE_VERSION \
  LOCAL_ENVIRONMENT_NAME

Weitere Parameter:

composer-dev create \
  --from-image-version IMAGE_VERSION \
  --project PROJECT_ID \
  --port WEB_SERVER_PORT \
  --dags-path LOCAL_DAGS_PATH \
  LOCAL_ENVIRONMENT_NAME

Ersetzen Sie:

  • IMAGE_VERSION durch den Namen des Cloud Composer-Images.
  • PROJECT_ID durch die Projekt-ID.
  • WEB_SERVER_PORT durch den Port, den der Airflow-Webserver überwachen muss.
  • LOCAL_DAGS_PATH durch den Pfad zu einem lokalen Verzeichnis, in dem sich die DAG-Dateien befinden befindet.
  • LOCAL_ENVIRONMENT_NAME durch den Namen dieser lokalen Airflow-Umgebung.

Beispiel:

composer-dev create \
  --from-image-version composer-2.8.5-airflow-2.7.3 \
  example-local-environment

Lokale Airflow-Umgebung aus einer Cloud Composer-Umgebung erstellen

Von einem Cloud Composer werden nur die folgenden Informationen übernommen Umgebung:

  • Image-Version (Versionen von Cloud Composer und in Ihrer Umgebung verwendeter Airflow).
  • Liste der benutzerdefinierten PyPI-Pakete, die in Ihrem zu verbessern.
  • Die Namen der Umgebungsvariablen, die in Ihrem zu verbessern.

Andere Informationen und Konfigurationsparameter aus der Umgebung, z. B. DAG-Dateien, DAG-Ausführungsverlauf, Airflow-Variablen und Verbindungen werden nicht kopiert aus Ihrer Cloud Composer-Umgebung.

So erstellen Sie eine lokale Airflow-Umgebung aus einer vorhandenen Cloud Composer-Umgebung:

composer-dev create LOCAL_ENVIRONMENT_NAME \
    --from-source-environment ENVIRONMENT_NAME \
    --location LOCATION \
    --project PROJECT_ID \
    --port WEB_SERVER_PORT \
    --dags-path LOCAL_DAGS_PATH

Ersetzen Sie:

  • LOCAL_ENVIRONMENT_NAME durch einen Namen für die lokale Airflow-Umgebung.
  • ENVIRONMENT_NAME durch den Namen der Cloud Composer-Umgebung.
  • LOCATION durch die Region, in der sich die Cloud Composer-Umgebung befindet befindet.
  • PROJECT_ID durch die Projekt-ID.
  • WEB_SERVER_PORT durch einen Port für den lokalen Airflow-Webserver.
  • LOCAL_DAGS_PATH durch einen Pfad zu einem lokalen Verzeichnis, in dem sich die DAGs befinden befindet.

Beispiel:

composer-dev create example-local-environment \
  --from-source-environment example-environment \
  --location us-central1 \
  --project example-project \
  --port 8081 \
  --dags-path example_directory/dags

Lokale Airflow-Umgebung starten

Führen Sie folgenden Befehl aus, um eine lokale Airflow-Umgebung zu starten:

composer-dev start LOCAL_ENVIRONMENT_NAME

Ersetzen Sie:

  • LOCAL_ENVIRONMENT_NAME durch den Namen einer lokalen Airflow-Umgebung.

Lokale Airflow-Umgebung beenden oder neu starten

Wenn Sie eine lokale Airflow-Umgebung neu starten, wird in der lokalen Entwicklungs-Befehlszeile von Composer wird der Docker-Container, in dem die Umgebung ausgeführt wird, neu gestartet. Gesamter Airflow beendet und neu gestartet. Daher werden alle DAG-Ausführungen, , die während eines Neustarts ausgeführt werden, werden als fehlgeschlagen gekennzeichnet .

Führen Sie folgenden Befehl aus, um eine beendete lokale Airflow-Umgebung neu zu starten oder zu starten:

composer-dev restart LOCAL_ENVIRONMENT_NAME

Ersetzen Sie:

  • LOCAL_ENVIRONMENT_NAME durch den Namen einer lokalen Airflow-Umgebung.

Führen Sie folgenden Befehl aus, um eine lokale Airflow-Umgebung zu beenden:

composer-dev stop LOCAL_ENVIRONMENT_NAME

DAGs hinzufügen und aktualisieren

DAgs werden in dem Verzeichnis gespeichert, das Sie unter --dags-path angegeben haben beim Erstellen der lokalen Airflow-Umgebung. Standardmäßig Verzeichnis ist ./composer/<local_environment_name>/dags. Sie erhalten die Verzeichnis, das von Ihrer Umgebung mit dem Befehl describe verwendet wird.

Ändern Sie die Dateien in diesem Verzeichnis, um DAGs hinzuzufügen und zu aktualisieren. Sie müssen nicht und starten Sie Ihre lokale Airflow-Umgebung neu.

Lokale Airflow-Umgebungslogs ansehen

Sie können aktuelle Logs aus einem Docker-Container aufrufen, in dem Ihr lokaler Airflow ausgeführt wird zu verbessern. So können Sie containerbezogene Ereignisse beobachten und prüfen, Airflow-Logs für Fehler wie Abhängigkeitskonflikte aufgrund von PyPI-Paketen Installation.

So rufen Sie Logs aus einem Docker-Container auf, in dem Ihre lokale Airflow-Umgebung ausgeführt wird: ausführen:

composer-dev logs LOCAL_ENVIRONMENT_NAME --max-lines 10

Wenn Sie dem Logstream folgen möchten, lassen Sie das Argument --max-lines weg:

composer-dev logs LOCAL_ENVIRONMENT_NAME

Airflow-Befehlszeile ausführen

Sie können Airflow-Kommandozeilenbefehle in Ihrem lokalen Airflow-Umgebung

So führen Sie einen Airflow-Kommandozeilenbefehl aus:

composer-dev run-airflow-cmd LOCAL_ENVIRONMENT_NAME \
  SUBCOMMAND SUBCOMMAND_ARGUMENTS

Beispiel:

composer-dev run-airflow-cmd example-local-environment dags list -o table

Lokale Airflow-Umgebungen konfigurieren

Das lokale Entwicklungs-CLI-Tool von Composer speichert Konfigurationsparameter für eine lokale Airflow-Umgebung wie Umgebungsvariablen und PyPI-Paket Anforderungen im Verzeichnis der lokalen Umgebung (./composer/<local_environment_name>).

Die Konfiguration wird angewendet, wenn eine lokale Airflow-Umgebung gestartet wird. Für Wenn Sie beispielsweise widersprüchliche PyPI-Paketanforderungen hinzufügen, Das Entwicklungs-CLI meldet Fehler, wenn Sie die lokale Umgebung starten.

Airflow-Verbindungen werden in der Datenbank des lokalen Airflows gespeichert zu verbessern. Sie können sie konfigurieren, indem Sie eine Airflow-Befehlszeile ausführen. oder indem Sie die Verbindungsparameter in Umgebungsvariablen. Weitere Informationen zu den Möglichkeiten, und Verbindungen konfigurieren, Verbindungen verwalten finden Sie in der Airflow-Dokumentation.

Liste und Status lokaler Airflow-Umgebungen abrufen

So listen Sie alle verfügbaren lokalen Airflow-Umgebungen und deren Status auf:

composer-dev list

So beschreiben Sie eine bestimmte Umgebung und rufen Details wie die Image-Version, den DAGs-Pfad und die Webserver-URL einer Umgebung ab:

composer-dev describe LOCAL_ENVIRONMENT_NAME

Ersetzen Sie:

  • LOCAL_ENVIRONMENT_NAME durch den Namen der lokalen Airflow-Umgebung.

In lokalen Airflow-Umgebungen verwendete Images auflisten

Führen Sie folgenden Befehl aus, um alle Images aufzulisten, die vom lokalen Composer-Befehlszeilentool verwendet werden:

docker images --filter=reference='*/cloud-airflow-releaser/*/*'

Plug-ins installieren und Daten ändern

Plug-ins und Daten für eine lokale Airflow-Umgebung werden aus dem Verzeichnis der lokalen Umgebung: ./composer/<local_environment_name>/data und ./composer/<local_environment_name>/plugins).

Wenn Sie den Inhalt der Verzeichnisse /data und /plugins ändern möchten, fügen Sie sie hinzu oder entfernen Sie sie Dateien in diesen Verzeichnissen. Docker leitet Dateiänderungen automatisch weiter an Ihre lokale Airflow-Umgebung.

Das lokale Entwicklungs-CLI-Tool von Composer unterstützt nicht die Angabe eines anderen für Daten und Plug-ins.

Umgebungsvariablen konfigurieren

Zum Konfigurieren von Umgebungsvariablen müssen Sie die variables.env bearbeiten im Umgebungsverzeichnis: ./composer/<local_environment_name>/variables.env.

Die Datei variables.env muss Schlüssel/Wert-Definitionen enthalten (in einer Zeile pro Schlüssel/Wert-Paar) Umgebungsvariable ein. Um die Airflow-Konfigurationsoptionen zu ändern, verwenden Sie die AIRFLOW__SECTION__KEY-Format. Weitere Informationen zu den verfügbaren Umgebungsvariablen finden Sie unter Referenz zur Airflow-Konfiguration

EXAMPLE_VARIABLE=True
ANOTHER_VARIABLE=test
AIRFLOW__WEBSERVER__DAG_DEFAULT_VIEW=graph

Starten Sie Ihre lokale Airflow-Umgebung neu, um die Änderungen zu übernehmen.

PyPI-Pakete installieren oder entfernen

Ändern Sie zum Installieren oder Entfernen von PyPI-Paketen die Datei requirements.txt im Umgebungsverzeichnis: ./composer/<local_environment_name>/requirements.txt.

Die Anforderungen müssen dem Format entsprechen, das in PEP-508, wobei jede Anforderung wird in Kleinbuchstaben angegeben und besteht aus dem Paketnamen mit optionalen Extras. und Versionsspezifizierer.

Starten Sie Ihre lokale Airflow-Umgebung neu, um die Änderungen zu übernehmen.

Zu einem anderen Cloud Composer-Image wechseln

Sie können jedes Cloud Composer-Image mit der lokalen Entwicklung von Composer verwenden CLI-Tool und wechseln Sie zwischen den Images. Dieser Ansatz unterscheidet sich von Sie führen ein Upgrade Ihrer Cloud Composer-Umgebung durch, da Konfigurationsparameter Ihrer lokalen Airflow-Umgebung werden angewendet, beginnt.

Nachdem eine neue Cloud Composer-Version veröffentlicht haben, können Sie Ihre Umgebung auf die neue Version umstellen vorhandene lokale Airflow-Umgebungskonfiguration. Als weiteres Beispiel zwischen verschiedenen Airflow-Versionen innerhalb eines bestimmten Cloud Composer-Version.

So ändern Sie das von Ihrer lokalen Airflow-Umgebung verwendete Image der Umgebung:

  1. Konfigurationsdatei für die lokale Umgebung bearbeiten: ./composer/<local_environment_name>/config.json

  2. Ändern Sie den Wert des Parameters composer_image_version. So rufen Sie die verfügbaren Werte auf: Liste der verfügbaren Cloud Composer-Versionen

  3. Starten Sie Ihre lokale Airflow-Umgebung neu, um die Änderungen zu übernehmen.

Lokale Airflow-Umgebung löschen

Achtung:Achten Sie darauf, dass Sie alle erforderlichen Daten aus der Umgebung, wie Logs und Konfiguration.

Führen Sie den folgenden Befehl aus, um eine lokale Airflow-Umgebung zu löschen:

composer-dev remove LOCAL_ENVIRONMENT_NAME

Wenn die Umgebung ausgeführt wird, fügen Sie das Flag --force hinzu, um das Entfernen zu erzwingen.

Docker-Images löschen

Führen Sie folgenden Befehl aus, um alle vom Composer Local Development CLI-Tool heruntergeladenen Images zu löschen:

docker rmi $(docker images --filter=reference='*/cloud-airflow-releaser/*/*' -q)

Fehlerbehebung

In diesem Abschnitt finden Sie Lösungen für häufige Probleme.

Lokale Umgebung kann unter macOS nicht gestartet werden

Wenn Sie das Paket composer-dev in einem Verzeichnis installiert haben, in dem Docker nicht möglich ist darauf zugreifen, wird Ihre lokale Umgebung möglicherweise nicht gestartet.

Wenn Python beispielsweise im Verzeichnis /opt installiert ist, z. B. wenn Sie mit der Homebrew-Standardkonfiguration unter macOS installieren, dann Das Paket composer-dev ist auch im Verzeichnis /opt installiert. Weil Docker entspricht den Sandbox-Regeln von Apple, das Verzeichnis /opt nicht standardmäßig verfügbar. Außerdem können Sie ihn nicht über die Benutzeroberfläche hinzufügen (Einstellungen &gt; Ressourcen &gt; Dateifreigabe).

In diesem Fall generiert das CLI-Tool für die lokale Entwicklung von Composer eine Fehlermeldung. Das sieht in etwa so aus:

Failed to create container with an error: 400 Client Error for ...
Bad Request ("invalid mount config for type "bind": bind source path does not exist:
/opt/homebrew/lib/python3.9/site-packages/composer_local_dev/docker_files/entrypoint.sh

Possible reason is that composer-dev was installed in the path that is
not available to Docker. See...")

Sie können eine der folgenden Lösungen verwenden:

  • Installieren Sie Python oder das composer-dev-Paket in einem anderen Verzeichnis. damit Docker auf das Paket zugreifen kann.
  • Manuelle Bearbeitung des ~/Library/Group\ Containers/group.com.docker/settings.json-Datei und /opt zu filesharingDirectories hinzufügen.

Nächste Schritte