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 2, qui est décrite dans la documentation Airflow.

Pour obtenir la liste complète des commandes de CLI Airflow compatibles, consultez la documentation de référence sur la commande gcloud composer environments run.

Avant de commencer

  • Vous devez 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 consomment le quota environments.executeAirflowCommand.

  • Dans les versions de Cloud Composer antérieures à 2.4.0, vous devez avoir accès au plan de contrôle du cluster de votre environnement pour exécuter les commandes de CLI Airflow.

Exécuter des commandes de CLI Airflow

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 sur un environnement d'adresse IP privée

Dans les versions de Cloud Composer antérieures à 2.4.0 :

Pour exécuter des commandes de CLI Airflow sur un environnement d'adresse IP privée, exécutez-les sur une machine qui peut accéder au point de terminaison du plan de contrôle du cluster GKE. Les options peuvent varier en fonction de votre configuration de cluster privé.

Si l'accès public aux points de terminaison est désactivé dans le cluster de votre environnement, il n'est pas possible d'utiliser les commandes gcloud composer pour exécuter la CLI Airflow. Pour pouvoir exécuter les commandes de la CLI Airflow, procédez comme suit :

  1. Créer une VM dans votre réseau VPC
  2. Obtenez les identifiants du cluster. Exécutez la commande suivante :

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

Utilisez kubectl pour exécuter votre commande Airflow. Exemple :

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

Remplacez COMPOSER_NAMESPACE par un espace de noms semblable à : composer-2-0-28-airflow-2-3-394zxc12411. Vous pouvez trouver votre instance Cloud Composer dans la liste des charges de travail ou à l'aide de la commande kubectl get namespaces.

Si l'accès public aux points de terminaison est activé dans le cluster de votre environnement, vous pouvez également exécuter les commandes de CLI Airflow depuis une machine dotée d'une adresse IP externe ajoutée aux réseaux autorisés. Pour activer l'accès depuis votre machine, ajoutez l'adresse externe de votre machine à la liste des réseaux autorisés de votre environnement.

Lorsque vous exécutez des commandes gcloud composer environments run ou kubectl, vous pouvez rencontrer l'erreur suivante :

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

Problème constaté : Ce message d'erreur indique qu'il n'y a pas de connectivité réseau à partir d'un ordinateur sur lequel vous exécutez ces commandes.

Solution : Suivez les consignes de la section Exécuter des commandes sur un environnement d'adresse IP privée ou utilisez les instructions de la section La commande kubectl expire.

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

À partir de la version 2.4.0 de Cloud Composer, 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 la CLI Airflow que vous souhaitez exécuter, par exemple dags.
  • AIRFLOW_SUBCOMMAND : sous-commande de la commande de CLI Airflow que vous souhaitez exécuter, par exemple 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 examinant 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": "39b82312-3a19-4d21-abac-7f8f19855ce7",
  "pod": "airflow-scheduler-1327d8cd68-hblpd",
  "podNamespace": "composer-2-4-0-airflow-2-5-3-184dadaf",
  "nextLineNumber": 1
}

Étapes suivantes