Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Vor dem Bereitstellen von DAGs für die Produktion können Sie Airflow-CLI-Unterbefehle ausführen, um DAG-Code im selben Kontext zu analysieren, in dem der DAG ausgeführt wird.
DAGs lokal mit dem Befehlszeilentool für die lokale Entwicklung in Composer testen
Mit dem Composer Local Development CLI-Tool wird die Entwicklung von Apache Airflow-DAGs für Cloud Composer 2 optimiert, da eine Airflow-Umgebung lokal ausgeführt wird. Diese lokale Airflow-Umgebung verwendet das Image einer bestimmte Cloud Composer 2-Version.
Sie können Ihre DAGs mit dieser lokalen Airflow-Umgebung entwickeln und testen. und übertragen Sie die DAGs dann in Ihre Cloud Composer-Testumgebung. Im weiteren Verlauf dieses Handbuchs wird das Testen von DAGs in einer Testumgebung beschrieben, Cloud Composer-Umgebung.
Während der DAG-Erstellung testen
Sie können eine einzelne Aufgabeninstanz lokal ausführen und die Logausgabe durchsehen. Auf diese Weise lassen sich Syntax- und Aufgabenfehler feststellen. Bei lokalen Tests werden weder Abhängigkeiten noch der Kommunikationsstatus mit der Datenbank geprüft.
Wir empfehlen, die DAGs in einem Ordner namens data/test
in Ihrer Testumgebung zu speichern.
Testverzeichnis erstellen
Erstellen Sie im Bucket Ihrer Umgebung ein Testverzeichnis und kopieren Sie Ihre DAGs in dieses Verzeichnis.
gcloud storage cp BUCKET_NAME/dags \
BUCKET_NAME/data/test --recursive
Ersetzen Sie Folgendes:
BUCKET_NAME
: Der Name des Buckets, der mit Ihrer Cloud Composer-Umgebung verknüpft ist.
Beispiel:
gcloud storage cp gs://us-central1-example-environment-a12bc345-bucket/dags \
gs://us-central1-example-environment-a12bc345-bucket/data/test --recursive
Weitere Informationen zum Hochladen von DAGs finden Sie unter DAGs hinzufügen und aktualisieren.
Auf Syntaxfehler prüfen
Überprüfung auf Syntaxfehler in DAGs, die Sie in den /data/test
hochgeladen haben
Ordner den folgenden gcloud
-Befehl ein:
gcloud composer environments run \
ENVIRONMENT_NAME \
--location ENVIRONMENT_LOCATION \
dags list -- --subdir /home/airflow/gcs/data/test
Ersetzen Sie Folgendes:
ENVIRONMENT_NAME
: der Name der Umgebung.ENVIRONMENT_LOCATION
: die Region, in der sich die Umgebung befindet.
Auf Aufgabenfehler prüfen
Wenn Sie nach aufgabenspezifischen Fehlern in DAGs suchen möchten, die Sie in den Ordner /data/test
hochgeladen haben, führen Sie den folgenden gcloud
-Befehl aus:
gcloud composer environments run \
ENVIRONMENT_NAME \
--location ENVIRONMENT_LOCATION \
tasks test -- --subdir /home/airflow/gcs/data/test \
DAG_ID TASK_ID \
DAG_EXECUTION_DATE
Ersetzen Sie Folgendes:
ENVIRONMENT_NAME
: der Name der Umgebung.ENVIRONMENT_LOCATION
: Region, in der sich die Umgebung befindet.DAG_ID
: die ID des DAG.TASK_ID
: die ID der Aufgabe.DAG_EXECUTION_DATE
: das Ausführungsdatum des DAG. Dieses Datum wird für Vorlagenzwecke verwendet. Der DAG wird sofort ausgeführt, egal welches Datum Sie hier angeben.
Beispiel:
gcloud composer environments run \
example-environment \
--location us-central1 \
tasks test -- --subdir /home/airflow/gcs/data/test \
hello_world print_date 2021-04-22
Bereitgestellten DAG aktualisieren und testen
So testen Sie Aktualisierungen Ihrer DAGs in Ihrer Testumgebung:
- Kopieren Sie den bereitgestellten DAG, den Sie aktualisieren möchten, in
data/test
. - Aktualisieren Sie den DAG.
- Testen Sie den DAG.
- Achten Sie darauf, dass der DAG erfolgreich ausgeführt wird.
- Deaktivieren Sie den DAG in Ihrer Testumgebung.
- Wechseln Sie dazu in der Airflow-Benutzeroberfläche zur Seite "DAGs".
- Wenn der zu bearbeitende DAG ständig ausgeführt wird, deaktivieren Sie ihn.
- Zum Beschleunigen ausstehender Aufgaben klicken Sie auf die jeweilige Aufgabe und markieren diese als erfolgreich.
- Stellen Sie den DAG in Ihrer Produktionsumgebung bereit.
- Deaktivieren Sie den DAG in Ihrer Produktionsumgebung.
- Laden Sie den aktualisierten DAG in den Ordner
dags/
Ihrer Produktionsumgebung.
FAQ zum Testen von DAGs
Wie isoliere ich DAG-Ausführungen in meinen Produktions- und Testumgebungen?
Beispiel: Airflow enthält ein globales Repository mit Quellcode im Ordner dags/
, das alle DAG-Ausführungen gemeinsam verwenden. Sie möchten Quellcode in der Produktions- oder Testumgebung ändern können, ohne dass sich dies auf ausgeführte DAGs auswirkt.
Airflow bietet keine strikte DAG-Isolation. Es empfiehlt sich, die Produktions- und Testumgebungen von Cloud Composer getrennt zu halten, damit Test-DAGs nicht in Konflikt mit Produktions-DAGs geraten.
Wie kann ich DAG-Interferenzen vermeiden, wenn ich Integrationstests von verschiedenen GitHub-Branches ausführe?
Verwenden Sie eindeutige Aufgabennamen, um Interferenzen zu verhindern. Beispielsweise können Sie dem Namen eines Zweigs die Aufgaben-IDs voranstellen.
Welche Best Practice gilt für Integrationstests mit Airflow?
Wir empfehlen, für Integrationstests mit Airflow eine dedizierte Umgebung zu verwenden. Eine Möglichkeit, erfolgreiche DAG-Ausführung aufzuzeigen, besteht darin, Daten in eine Datei in einem Cloud Storage-Ordner zu schreiben und den Inhalt in eigenen Integrationstestläufen zu prüfen.
Wie arbeite ich effizient mit anderen DAG-Contributors zusammen?
Für jeden Contributor kann ein eigenes Unterverzeichnis im Ordner data/
für die Entwicklung angelegt werden.
Dem Ordner data/
hinzugefügte DAGs werden nicht automatisch vom Airflow-Planer oder vom Webserver erfasst.
Mit DAG-Contributors können manuelle DAG-Ausführungen erstellt werden. Dazu verwenden sie den Befehl gcloud composer environments run
und den Unterbefehl test
mit dem Flag --subdir
, um das Entwicklungsverzeichnis des Contributors anzugeben.
Beispiel:
gcloud composer environments run test-environment-name \
tasks test -- dag-id task-id execution-date \
--subdir /home/airflow/gcs/data/alice_dev
Wie sorge ich dafür, dass meine Bereitstellungsumgebung mit meiner Produktionsumgebung synchron bleibt?
So verwalten Sie den Zugriff:
Verwenden Sie Dienstkonten für die Authentifizierung.
Verwenden Sie Rollen und Berechtigungen von Identity and Access Management sowie Cloud Composer für die Zugriffssteuerung.
So geht die Bereitstellung von der Entwicklung in die Produktion:
Achten Sie auf eine konsistente Konfiguration, z. B. bei Umgebungsvariablen und PyPI-Paketen.
Achten Sie auf konsistente DAG-Argumente. Wir empfehlen die Verwendung von Airflow-Makros und -Variablen, um eine Hartcodierung zu vermeiden.
Beispiel:
gcloud composer environments run test-environment-name \ variables set -- DATA_ENDPOINT_KEY DATA_ENDPOINT_VALUE
Nächste Schritte
- Fehlerbehebung bei DAGs
- DAGs hinzufügen und aktualisieren
- DAGs mithilfe der Versionskontrolle testen, synchronisieren und bereitstellen