Accedi all'interfaccia a riga di comando di Airflow

Cloud Composer 1 | Cloud Composer 2

Apache Airflow ha un'interfaccia a riga di comando (CLI) che puoi utilizzare per eseguire attività come l'attivazione e la gestione dei DAG, il recupero di informazioni sulle esecuzioni e le attività dei DAG, l'aggiunta e l'eliminazione di connessioni e utenti.

Informazioni sulle versioni della sintassi dell'interfaccia a riga di comando

Airflow in Cloud Composer 2 utilizza la sintassi dell'interfaccia a riga di comando di Airflow 2

Comandi dell'interfaccia a riga di comando di Airflow supportati

Per un elenco completo dei comandi dell'interfaccia a riga di comando di Airflow supportati, consulta il riferimento per gcloud composer environments run.

Prima di iniziare

  • Devi disporre di autorizzazioni sufficienti per utilizzare lo strumento a riga di comando gcloud con Cloud Composer ed eseguire i comandi dell'interfaccia a riga di comando di Airflow. Per ulteriori informazioni, consulta la sezione Controllo dell'accesso.

  • Nelle versioni di Cloud Composer precedenti alla 2.4.0, devi avere accesso al piano di controllo del cluster del tuo ambiente per eseguire i comandi dell'interfaccia a riga di comando di Airflow.

Esegui i comandi dell'interfaccia a riga di comando di Airflow

Per eseguire i comandi dell'interfaccia a riga di comando di Airflow nei tuoi ambienti, utilizza gcloud:

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

Sostituisci:

Separatore di argomenti dei sottocomandi

Separa gli argomenti per il comando dell'interfaccia a riga di comando Airflow specificato con --:

Airflow 2

Per la sintassi dell'interfaccia a riga di comando di Airflow 2:

  • Specifica i comandi dell'interfaccia a riga di comando composti come sottocomando.
  • Specifica eventuali argomenti per i comandi composti come argomenti dei comandi secondari, dopo un separatore --.
gcloud composer environments run example-environment \
    dags list -- --output=json

Airflow 1

Cloud Composer 2 supporta solo Airflow 2.

Località predefinita

La maggior parte dei comandi gcloud composer richiede una posizione. Puoi specificare la località con il flag --location o impostando la località predefinita.

Esempio

Ad esempio, per attivare un DAG denominato sample_quickstart con l'ID 5077 nel tuo ambiente Cloud Composer:

Airflow 2

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

Airflow 1

Cloud Composer 2 supporta solo Airflow 2.

Esecuzione di comandi in un ambiente con IP privato

A partire da Cloud Composer versione 2.4.0, puoi eseguire i comandi dell'interfaccia a riga di comando di Airflow in un ambiente IP privato senza ulteriori configurazioni. La tua macchina non ha bisogno di accedere all'endpoint del piano di controllo del cluster dell'ambiente per eseguire questi comandi.

Nelle versioni di Cloud Composer precedenti alla 2.4.0:

Per eseguire i comandi dell'interfaccia a riga di comando di Airflow su un ambiente IP privato, eseguili su una macchina che può accedere all'endpoint del piano di controllo del cluster GKE. Le opzioni possono variare a seconda della configurazione del cluster privato.

Se l'accesso agli endpoint pubblici è disabilitato nel cluster del tuo ambiente, non puoi utilizzare i comandi gcloud composer per eseguire l'interfaccia a riga di comando di Airflow. Per poter eseguire i comandi dell'interfaccia a riga di comando di Airflow, segui questi passaggi:

  1. Crea una VM nella tua rete VPC
  2. Acquisisci credenziali cluster. Esegui questo comando: bash gcloud container clusters get-credentials CLUSTER_NAME \ --region REGION \ --project PROJECT \ --internal-ip
  • Usa kubectl per eseguire il comando Airflow. Ad esempio:
kubectl exec deployment/airflow-scheduler -n COMPOSER_NAMESPACE \
  --container airflow-scheduler -- airflow dags list

Sostituisci COMPOSER_NAMESPACE con uno spazio dei nomi simile a: composer-2-0-28-airflow-2-3-394zxc12411. Puoi trovare Cloud Composer nell'elenco dei carichi di lavoro o utilizzando il comando kubectl get namespaces.

Se l'accesso pubblico agli endpoint è abilitato nel cluster del tuo ambiente, puoi anche eseguire i comandi dell'interfaccia a riga di comando di Airflow da una macchina con un indirizzo IP esterno che viene aggiunto alle reti autorizzate. Per abilitare l'accesso dalla tua macchina, aggiungi l'indirizzo esterno della macchina all'elenco di reti autorizzate del tuo ambiente.

Esegui i comandi dell'interfaccia a riga di comando di Airflow tramite l'API Cloud Composer

A partire da Cloud Composer versione 2.4.0, puoi eseguire i comandi dell'interfaccia a riga di comando di Airflow tramite l'API Cloud Composer.

Esegui un comando

Crea una richiesta API environments.executeAirflowCommand:

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

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto.
  • LOCATION: la regione in cui si trova l'ambiente.
  • ENVIRONMENT_NAME: il nome dell'ambiente.
  • AIRFLOW_COMMAND: comando dell'interfaccia a riga di comando di Airflow che vuoi eseguire, come dags.
  • AIRFLOW_SUBCOMMAND: sottocomando del comando dell'interfaccia a riga di comando di Airflow che vuoi eseguire, ad esempio list.
  • (Facoltativo) SUBCOMMAND_PARAMETER: parametri per il sottocomando. Se vuoi utilizzare più parametri, aggiungi altre voci all'elenco.

Esempio:

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

Stato comando sondaggio

Dopo aver eseguito un comando dell'interfaccia a riga di comando Airflow tramite l'API Cloud Composer, verifica se il comando è stato completato correttamente effettuando una richiesta PollAirflowCommand e ispezionando i campi in exitInfo per individuare errori e codici di stato. Il campo output contiene righe di log.

Per ottenere lo stato di esecuzione del comando e i log di recupero, fornisci i valori executionId, pod e podNamespace restituiti da ExecuteAirflowCommandRequest:

Esempio:

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

Risoluzione dei problemi

Nessuna connettività al piano di controllo del cluster

Durante l'esecuzione dei comandi gcloud composer environments run o kubectl, potresti riscontrare il seguente errore:

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

Sintomo: questo messaggio di errore indica che non è presente alcuna connettività di rete dal computer in cui esegui questi comandi.

Soluzione: segui le linee guida presentate nella sezione Esecuzione di comandi in un ambiente IP privato o utilizza le istruzioni disponibili nella sezione Timeout del comando kubectl.