Accéder à l'interface de ligne de commande Airflow

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Apache Airflow dispose d'une interface de ligne de commande (CLI) qui vous permet de déclencher et gérer des DAG, d'obtenir des informations sur les exécutions de DAG et sur les tâches, et d'ajouter ou supprimer des connexions et des utilisateurs.

Commandes de CLI Airflow compatibles

Airflow utilise la syntaxe CLI Airflow, décrite dans la documentation Airflow.

Cloud Composer 3 est compatible avec les commandes de CLI Airflow suivantes :

  • (Airflow 2 et 3) La commande gcloud composer environments run exécute les commandes de la CLI Airflow pour votre environnement. Certaines commandes sont bloquées et ne peuvent pas être exécutées. Consultez la documentation de référence de la commande pour obtenir la liste des commandes de CLI Airflow compatibles.

  • (Airflow 3) L'outil de ligne de commande airflowctl est compatible avec un sous-ensemble de commandes de l'interface de ligne de commande Airflow et les exécute à l'aide de l'API REST Airflow. Toutes les commandes disponibles dans airflowctl sont compatibles avec Cloud Composer. Assurez-vous que le compte Airflow de l'utilisateur dispose d'un rôle Airflow qui peut exécuter une commande spécifique.

Avant de commencer

Pour exécuter des commandes Airflow CLI via Google Cloud CLI :

  • Votre compte Google doit disposer des autorisations nécessaires pour utiliser Google Cloud CLI avec Cloud Composer et exécuter les commandes de la CLI Airflow.

  • Les commandes de CLI Airflow exécutées via Google Cloud CLI consomment le quota environments.executeAirflowCommand.

Pour exécuter les commandes de CLI Airflow à l'aide de l'outil de ligne de commande airflowctl (dans Airflow 3) :

Exécuter des commandes de CLI Airflow avec la gcloud CLI

Pour exécuter les commandes de CLI Airflow dans vos environnements, utilisez gcloud CLI :

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

Remplacez les éléments suivants :

  • ENVIRONMENT_NAME : nom de votre environnement
  • LOCATION : région où se trouve l'environnement.
  • SUBCOMMAND : l'une des commandes de CLI Airflow compatibles.
  • SUBCOMMAND_ARGUMENTS par les arguments de la commande Airflow CLI.

Séparateur des arguments de sous-commande

Séparez les arguments de la commande de CLI Airflow spécifiée avec -- :

  • Spécifiez les commandes CLI composées dans une sous-commande.
  • Spécifiez les arguments des commandes composées en tant qu'arguments de sous-commande, après un séparateur --.

Exemple :

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

Emplacement par défaut

La plupart des commandes gcloud composer nécessitent un emplacement. Vous pouvez le spécifier à l'aide de l'option --location ou en définissant l'emplacement par défaut.

Par exemple, pour déclencher un DAG nommé sample_quickstart ayant l'ID 5077 dans votre environnement Cloud Composer :

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

Exécuter des commandes de CLI Airflow avec airflowctl

L'outil de ligne de commande airflowctl est un utilitaire de ligne de commande fourni par Airflow pour exécuter les commandes de la CLI Airflow. Il est compatible avec un sous-ensemble de commandes de CLI Airflow et les exécute à l'aide de l'API REST Airflow. Toutes les commandes disponibles dans airflowctl sont compatibles avec Cloud Composer.

L'autorisation et l'authentification avec airflowctl dans Cloud Composer fonctionnent de la manière suivante :

  • Comme airflowctl utilise l'API REST Airflow, assurez-vous que le compte utilisateur Airflow associé à votre compte Google ou à votre compte de service dispose d'un rôle Airflow avec les autorisations suffisantes pour exécuter une commande. Par exemple, certaines commandes ne peuvent être exécutées que par les utilisateurs Airflow disposant du rôle Admin.

  • Le jeton d'API utilisé par airflowctl est fourni avec la commande gcloud auth. Par défaut, le jeton a une durée de vie d'une heure. Vous pouvez le modifier avec l'argument --lifetime fourni à cette commande.

Pour vous authentifier avec airflowctl, exécutez la commande suivante :

airflowctl auth login \
  --api-url WEB_SERVER_URL \
  --api-token $(gcloud auth print-access-token)

Remplacez les éléments suivants :

Exemple :

airflowctl auth login \
  --api-url https://example-dot-us-central1.composer.googleusercontent.com \
  --api-token $(gcloud auth print-access-token)

Une fois que vous vous êtes authentifié auprès de airflowctl, vous pouvez exécuter des commandes Airflow CLI :

airflowctl dags list

Exécuter des commandes de CLI Airflow via l'API Cloud Composer

Dans Cloud Composer 3, vous pouvez exécuter des commandes de CLI Airflow via l'API Cloud Composer.

Exécuter une commande

Rédigez une requête API environments.executeAirflowCommand :

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

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet.
  • LOCATION : région où se trouve l'environnement.
  • ENVIRONMENT_NAME : nom de votre environnement
  • AIRFLOW_COMMAND : commande de CLI Airflow que vous souhaitez exécuter, par exemple dags.
  • AIRFLOW_SUBCOMMAND : sous-commande de la commande CLI Airflow que vous souhaitez exécuter, telle que list.
  • (facultatif) SUBCOMMAND_PARAMETER : paramètres de la sous-commande. Si vous souhaitez utiliser plusieurs paramètres, ajoutez d'autres éléments à la liste.

Exemple :

// 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"
  ]
}

Interroger l'état de la commande

Après avoir exécuté une commande Airflow CLI via l'API Cloud Composer, vérifiez si la commande a bien été exécutée en envoyant une requête PollAirflowCommand et en inspectant les champs de exitInfo pour détecter les erreurs et les codes d'état. Le champ output contient des lignes de journaux.

Pour obtenir l'état d'exécution de la commande et récupérer les journaux, fournissez les valeurs executionId, pod et podNamespace renvoyées par ExecuteAirflowCommandRequest :

Exemple :

// POST https://composer.googleapis.com/v1/{environment=projects/*/locations/*/environments/*}:pollAirflowCommand
{
  "executionId": "a117da94-355d-4ad4-839e-ac39ccb0bf48",
  "pod": "airflow-webserver-66d96b858f-tn96b",
  "podNamespace": "airflow-2-10-2-build-13-226523e4",
  "nextLineNumber": 1
}

Étapes suivantes