Auf Airflow-Befehlszeile zugreifen

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Apache Airflow bietet eine Befehlszeile, mit der Sie Aufgaben wie das Auslösen und Verwalten von DAGs, das Abrufen von Informationen zu DAG-Ausführungen und -Aufgaben, das Hinzufügen und Löschen von Verbindungen und Nutzern ausführen können.

Unterstützte Befehle der Airflow-Befehlszeile

Airflow verwendet die Airflow 2-Befehlszeilensyntax, die in der Airflow-Dokumentation beschrieben wird.

Eine vollständige Liste der unterstützten Airflow-Befehlszeilenbefehle finden Sie in der Referenz zum Befehl gcloud composer environments run.

Hinweise

  • Sie benötigen Berechtigungen, um die Google Cloud CLI mit Cloud Composer zu verwenden und Befehle der Airflow-Befehlszeile auszuführen.

  • Für Airflow-Befehlszeilenbefehle wird das environments.executeAirflowCommand-Kontingent verwendet.

  • In Cloud Composer-Versionen vor 2.4.0 benötigen Sie Zugriff auf die Steuerungsebene des Clusters Ihrer Umgebung, um Befehle der Airflow-Befehlszeile auszuführen.

Befehle der Airflow-Befehlszeile ausführen

Zum Ausführen von Befehlen der Airflow-Befehlszeile in Ihren Umgebungen verwenden Sie die gcloud CLI:

gcloud composer environments run ENVIRONMENT_NAME \
    --location LOCATION \
    SUBCOMMAND \
    -- SUBCOMMAND_ARGUMENTS

Ersetzen Sie Folgendes :

  • ENVIRONMENT_NAME: der Name Ihrer Umgebung
  • LOCATION: die Region, in der sich die Umgebung befindet.
  • SUBCOMMAND: einer der unterstützten Airflow-Befehlszeilenbefehle.
  • SUBCOMMAND_ARGUMENTS durch Argumente für den Airflow-Befehlszeilenbefehl.

Trennzeichen für Unterbefehle

Trennen Sie die Argumente für den angegebenen Airflow-Befehlszeilenbefehl durch --:

  • Geben Sie komplexe Befehlszeilenbefehle als Unterbefehl an.
  • Geben Sie nach dem ---Trennzeichen Argumente für zusammengesetzte Befehle als Unterbefehlsargumente an.

Beispiel:

gcloud composer environments run example-environment \
    dags list -- --output=json

Standardort

Für die meisten gcloud composer-Befehle ist ein Speicherort erforderlich. Sie können den Speicherort mit dem Flag --location oder durch Festlegen des Standardspeicherorts angeben.

Beispielsweise haben Sie die Möglichkeit, mit dem folgenden Befehl einen DAG namens sample_quickstart mit der ID 5077 in Ihrer Cloud Composer-Umgebung auszulösen:

gcloud composer environments run example-environment \
    --location us-central1 dags trigger -- sample_quickstart \
    --run-id=5077

Befehle in einer privaten IP-Umgebung ausführen

In Cloud Composer-Versionen vor 2.4.0:

Zum Ausführen von Befehlen der Airflow-Befehlszeile in einer privaten IP-Umgebung müssen Sie sie auf einem Computer aufrufen, der Zugriff auf den Endpunkt der Steuerungsebene des GKE-Cluster hat. Die Optionen variieren dabei abhängig von Ihrer privaten Clusterkonfiguration.

Wenn der Zugriff auf öffentliche Endpunkte im Cluster Ihrer Umgebung deaktiviert ist, können Sie die Airflow-Befehlszeile nicht mit gcloud composer-Befehlen ausführen. Führen Sie die folgenden Schritte aus, um Airflow-Befehlszeilenbefehle ausführen zu können:

  1. VM in Ihrem VPC-Netzwerk erstellen
  2. Clusteranmeldedaten abrufen Führen Sie dazu diesen Befehl aus:

    gcloud container clusters get-credentials CLUSTER_NAME \
      --region REGION \
      --project PROJECT \
      --internal-ip
    

Verwenden Sie kubectl, um Ihren Airflow-Befehl auszuführen. Beispiel:

kubectl exec deployment/airflow-scheduler -n COMPOSER_NAMESPACE \
  --container airflow-scheduler -- airflow dags list

Ersetzen Sie COMPOSER_NAMESPACE durch einen Namespace wie composer-2-0-28-airflow-2-3-394zxc12411. Sie finden Ihre Cloud Composer-Umgebung in der Liste der Arbeitslasten oder mit dem Befehl kubectl get namespaces.

Wenn der Zugriff auf öffentliche Endpunkte im Cluster Ihrer Umgebung aktiviert ist, können Sie Airflow-Befehle der Befehlszeile auch von einem Computer mit einer externen IP-Adresse ausführen, die zu autorisierten Netzwerken hinzugefügt wurde. Wenn Sie den Zugriff von Ihrem Computer aus aktivieren möchten, fügen Sie die externe Adresse Ihres Computers der Liste der autorisierten Netzwerke Ihrer Umgebung hinzu.

Wenn Sie die Befehle gcloud composer environments run oder kubectl ausführen, kann der folgende Fehler auftreten:

Get "https://<IP Address>/api?timeout=32s": dial tcp <IP Address>:443: i/o timeout"

Symptom: Diese Fehlermeldung weist darauf hin, dass auf dem Computer, auf dem Sie diese Befehle ausführen, keine Netzwerkverbindung besteht.

Lösung: Folgen Sie der Anleitung im Abschnitt Befehle in einer privaten IP-Umgebung ausführen oder verwenden Sie die Anleitung im Abschnitt Zeitüberschreitung beim Befehl kubectl.

Befehle der Airflow-Befehlszeile über die Cloud Composer API ausführen

Ab Cloud Composer-Version 2.4.0 können Sie Airflow-Befehlszeilenbefehle über die Cloud Composer API ausführen.

Befehl ausführen

Erstellen Sie eine API-Anfrage environments.executeAirflowCommand:

{
  "environment": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "command": "AIRFLOW_COMMAND",
  "subcommand": "AIRFLOW_SUBCOMMAND",
  "parameters": [
    "SUBCOMMAND_PARAMETER"
  ]
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: die Projekt-ID.
  • LOCATION: die Region, in der sich die Umgebung befindet.
  • ENVIRONMENT_NAME: der Name Ihrer Umgebung
  • AIRFLOW_COMMAND: Der Airflow-CLI-Befehl, den Sie ausführen möchten, z. B. dags.
  • AIRFLOW_SUBCOMMAND: Unterbefehl für den Airflow-Befehlszeilenbefehl, den Sie ausführen möchten, z. B. list.
  • (optional) SUBCOMMAND_PARAMETER: Parameter für den Unterbefehl. Wenn Sie mehr als einen Parameter verwenden möchten, fügen Sie der Liste weitere Elemente hinzu.

Beispiel:

// POST https://composer.googleapis.com/v1/{environment=projects/*/locations/*/environments/*}:executeAirflowCommand
{
  "environment": "projects/example-project/locations/us-central1/environments/example-environment",
  "command": "dags",
  "subcommand": "list",
  "parameters": [
    "-o json",
    "--verbose"
  ]
}

Befehlsstatus abrufen

Nachdem Sie einen Airflow-Befehlszeilenbefehl über die Cloud Composer API ausgeführt haben, prüfen Sie, ob der Befehl erfolgreich abgeschlossen wurde. Senden Sie dazu eine PollAirflowCommand-Anfrage und prüfen Sie die Felder in exitInfo auf Fehler und Statuscodes. Das Feld output enthält Logzeilen.

Geben Sie die von ExecuteAirflowCommandRequest zurückgegebenen Werte executionId, pod und podNamespace an, um den Status der Befehlsausführung abzurufen und Logs abzurufen:

Beispiel:

// POST https://composer.googleapis.com/v1/{environment=projects/*/locations/*/environments/*}:pollAirflowCommand
{
  "executionId": "39b82312-3a19-4d21-abac-7f8f19855ce7",
  "pod": "airflow-scheduler-1327d8cd68-hblpd",
  "podNamespace": "composer-2-4-0-airflow-2-5-3-184dadaf",
  "nextLineNumber": 1
}

Nächste Schritte