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 der Grundlage einer vorhandenen Cloud Composer-Umgebung erstellen. In diesem Fall übernimmt die lokale Airflow-Umgebung die Liste der installierten PyPI-Pakete und Umgebungsvariablennamen 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. Wenn Sie später auf Ihre lokale Airflow-Umgebung zugreifen möchten, führen Sie die Toolbefehle im Pfad aus, in dem Sie die lokale Umgebung ursprünglich erstellt haben. 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>
.Der Computer muss genügend Speicherplatz zum Speichern von Cloud Composer haben Bilder. Das lokale Entwicklungs-CLI-Tool von Composer speichert eine Image-Datei pro Cloud Composer-Version. Wenn Sie beispielsweise 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 farblich hervorgehobene 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 den Namen der lokalen Umgebung aus allen
composer-dev
-Befehlen außerrun-airflow-cmd
weglassen.Abhängigkeiten des Befehlszeilentools für die lokale Entwicklung mit Composer installieren:
- Python-Versionen 3.7 bis 3.10 mit
pip
- Google Cloud CLI
- Python-Versionen 3.7 bis 3.10 mit
Installieren Sie Docker. Docker muss auf dem lokalen System installiert und ausgeführt werden. Um zu prüfen, ob Docker können Sie einen beliebigen Docker-Kommandozeilenbefehl wie
docker ps
ausführen.
Anmeldedaten konfigurieren
Rufen Sie neue Nutzeranmeldedaten für die Standardanmeldedaten für Anwendungen ab, falls Sie das noch nicht getan haben:
gcloud auth application-default login
Melden Sie sich in der gcloud CLI mit Ihrem Google-Konto 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. Das unterscheidet sich von Cloud Composer-Umgebungen, in denen die Aufrufe über das Dienstkonto einer Umgebung erfolgen.
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 .
Je nach pip
-Konfiguration ist der Pfad, unter dem das Tool installiert ist, möglicherweise nicht in der Variablen PATH
enthalten. In diesem Fall wird in pip
eine Warnmeldung angezeigt. Anhand der Informationen in dieser Warnmeldung können Sie dieses Verzeichnis der Variablen PATH
in Ihrem Betriebssystem hinzufügen.
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
So erstellen Sie eine lokale Airflow-Umgebung mit Standardparametern:
composer-dev create \
--from-image-version IMAGE_VERSION \
LOCAL_ENVIRONMENT_NAME
Sonstige 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.9.7-airflow-2.9.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 Airflow, die in Ihrer Umgebung verwendet werden).
- 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 aus Ihrer Cloud Composer-Umgebung kopiert.
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
mit einem 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 Folgendes 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 mit dem Composer Local Development CLI-Tool der Docker-Container neu gestartet, in dem die Umgebung ausgeführt wird. Alle Airflow-Komponenten werden angehalten und wieder gestartet. Daher werden alle DAG-Ausführungen, , die während eines Neustarts ausgeführt werden, werden als fehlgeschlagen gekennzeichnet .
Wenn Sie eine angehaltene lokale Airflow-Umgebung neu starten oder starten möchten, führen Sie Folgendes aus:
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
-Parameter, wenn Sie Ihre lokale Airflow-Umgebung erstellt haben. Standardmäßig ist das ./composer/<local_environment_name>/dags
. Sie erhalten die
Verzeichnis, das von Ihrer Umgebung mit dem Befehl describe
verwendet wird.
Wenn Sie DAGs hinzufügen und aktualisieren möchten, ändern Sie die Dateien in diesem Verzeichnis. Sie müssen nicht und starten Sie Ihre lokale Airflow-Umgebung neu.
Lokale Airflow-Umgebungslogs ansehen
Sie können sich die letzten Logs aus einem Docker-Container ansehen, in dem Ihre lokale Airflow-Umgebung ausgeführt wird. So können Sie containerbezogene Ereignisse beobachten und prüfen, Airflow-Logs für Fehler wie Abhängigkeitskonflikte aufgrund von PyPI-Paketen Installation.
Führen Sie den folgenden Befehl aus, um Logs aus einem Docker-Container aufzurufen, in dem Ihre lokale Airflow-Umgebung ausgeführt wird:
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-Befehlszeilenbefehl 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, siehe Verbindungen verwalten finden Sie in der Airflow-Dokumentation.
Liste und Status lokaler Airflow-Umgebungen abrufen
So listen Sie alle verfügbaren lokalen Airflow-Umgebungen auf und rufen deren Status ab:
composer-dev list
So beschreiben Sie eine bestimmte Umgebung und rufen Details wie die Imageversion, den DAG-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 Folgendes aus, um alle vom CLI-Tool für die lokale Entwicklung von Composer verwendeten Images aufzulisten:
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
) übernommen.
Wenn Sie den Inhalt der Verzeichnisse /data
und /plugins
ändern möchten, fügen Sie Dateien in diesen Verzeichnissen hinzu oder entfernen Sie sie. Docker überträgt Dateiänderungen automatisch in 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 in der Airflow-Konfigurationsreferenz.
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 in PEP-508 angegebenen Format entsprechen, wobei jede Anforderung in Kleinbuchstaben angegeben wird und aus dem Paketnamen mit optionalen Extras und Versionsangaben besteht.
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 dem CLI-Tool für die lokale Entwicklung von Composer verwenden und zwischen den Images wechseln. Dieser Ansatz unterscheidet sich von Sie führen ein Upgrade Ihrer Cloud Composer-Umgebung durch, da Konfigurationsparameter Ihrer lokalen Airflow-Umgebung werden angewendet, beginnt.
Wenn beispielsweise eine neue Cloud Composer-Version veröffentlicht wird, können Sie Ihre Umgebung auf die neue Version umstellen und die vorhandene lokale Airflow-Umgebungskonfiguration beibehalten. 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:
Bearbeiten Sie die Konfigurationsdatei für die lokale Umgebung:
./composer/<local_environment_name>/config.json
.Ändern Sie den Wert des Parameters
composer_image_version
. Eine Liste der verfügbaren Werte finden Sie unter Verfügbare Cloud Composer-Versionen auflisten.Starten Sie Ihre lokale Airflow-Umgebung neu, um die Änderungen zu übernehmen.
Lokale Airflow-Umgebung löschen
Achtung: Achten Sie darauf, alle erforderlichen Daten aus der Umgebung zu speichern, z. B. Protokolle und Konfigurationen.
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 auf macOS kann 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 sie nicht über die Benutzeroberfläche hinzufügen (Einstellungen > Ressourcen > 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
zufilesharingDirectories
hinzufügen.