Accedi all'interfaccia a riga di comando Airflow

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Apache Airflow dispone di un'interfaccia a riga di comando (CLI) che puoi utilizzare per eseguire come l'attivazione e la gestione dei DAG e l'ottenimento di informazioni sulle esecuzioni dei DAG e attività, aggiungendo ed eliminando 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 Airflow 2

Comandi dell'interfaccia a riga di comando Airflow supportati

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

Prima di iniziare

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

  • Nelle versioni di Cloud Composer precedenti alla 2.4.0, è necessario l'accesso al piano di controllo del cluster dell'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 sottocomando

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

Flusso d'aria 2

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

  • Specifica i comandi CLI 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 località. Puoi specificare località con il flag --location o per impostare la località predefinita.

Esempio

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

Flusso d'aria 2

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

Flusso d'aria 1

Cloud Composer 2 supporta solo Airflow 2.

Eseguire comandi in un ambiente IP privato

A partire da Cloud Composer versione 2.4.0, puoi eseguire l'interfaccia a riga di comando di Airflow su un ambiente IP privato senza ulteriore configurazione. Il tuo di una macchina virtuale non necessita dell'accesso al piano di controllo del cluster dell'ambiente endpoint 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 in un ambiente IP privato, su una macchina in grado di accedere dall'endpoint del piano di controllo. Le opzioni possono variare a seconda del configurazione del cluster privato.

Se l'accesso agli endpoint pubblici è disabilitato nel cluster del tuo ambiente, non è possibile 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, svolgi i seguenti passaggi:

  1. Crea una VM nella rete VPC
  2. Acquisisci le credenziali del 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 agli endpoint pubblici è 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 aggiunto alle reti autorizzate. Per abilitare l'accesso dal tuo computer, aggiungi il token dalla macchina all'indirizzo esterno della macchina elenco di reti autorizzate.

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

A partire dalla versione 2.4.0 di Cloud Composer, puoi eseguire i comandi della CLI 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 del tuo ambiente.
  • AIRFLOW_COMMAND: il comando dell'interfaccia a riga di comando di Airflow che vuoi eseguire, come dags.
  • AIRFLOW_SUBCOMMAND: sottocomando per il comando dell'interfaccia a riga di comando di Airflow che che vuoi eseguire, ad esempio list.
  • (Facoltativo) SUBCOMMAND_PARAMETER: parametri del sottocomando. Se Se vuoi utilizzare più di un parametro, aggiungi più 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 del comando di polling

Dopo aver eseguito un comando dell'interfaccia a riga di comando Airflow tramite l'API Cloud Composer, controlla se il comando sia stato completato correttamente PollAirflowCommand e ispezionare in exitInfo per gli errori e i codici di stato. Il campo output contiene di log.

Per ottenere lo stato di esecuzione del comando e recuperare i log, fornisci executionId, Valori 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

Quando esegui i 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 esiste una rete. da un computer su cui esegui questi comandi.

Soluzione: segui le linee guida riportate nella sezione Eseguire comandi in un ambiente IP privato o utilizza le istruzioni disponibili nella sezione Il comando kubectl ha esaurito il tempo di attesa.