Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Apache Airflow ha un'interfaccia a riga di comando (CLI) che puoi utilizzare per eseguire attività come l'attivazione e la gestione di DAG, l'ottenimento di informazioni sulle esecuzioni di DAG e sulle attività, l'aggiunta ed eliminazione di connessioni e utenti.
Comandi dell'interfaccia a riga di comando Airflow supportati
Airflow utilizza la sintassi dell'interfaccia a riga di comando Airflow 2, descritta nella documentazione di Airflow.
Per un elenco completo dei comandi dell'interfaccia a riga di comando di Airflow supportati, consulta la documentazione di riferimento del comando
gcloud composer environments run
.
Prima di iniziare
Devi disporre delle autorizzazioni per utilizzare Google Cloud CLI con Cloud Composer ed eseguire i comandi dell'interfaccia a riga di comando di Airflow.
I comandi dell'interfaccia a riga di comando di Airflow consumano la
environments.executeAirflowCommand
quota.Nelle versioni di Cloud Composer precedenti alla 2.4.0, devi accedere al control plane del cluster del tuo ambiente per eseguire i comandi della CLI 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 CLI:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
SUBCOMMAND \
-- SUBCOMMAND_ARGUMENTS
Sostituisci quanto segue :
ENVIRONMENT_NAME
: il nome del tuo ambiente.LOCATION
: la regione in cui si trova l'ambiente.SUBCOMMAND
: uno dei comandi dell'interfaccia a riga di comando di Airflow supportati.SUBCOMMAND_ARGUMENTS
con argomenti per il comando Airflow CLI.
Separatore degli argomenti dei sottocomandi
Separa gli argomenti per il comando CLI Airflow specificato con --
:
- Specifica i comandi CLI composti come sottocomando.
- Specifica gli argomenti per i comandi composti come argomenti dei sottocomandi,
dopo un separatore
--
.
Esempio:
gcloud composer environments run example-environment \
dags list -- --output=json
Località predefinita
La maggior parte dei comandi gcloud composer
richiede una posizione. Puoi specificare la
posizione con il flag --location
o
impostando la posizione predefinita.
Ad esempio, per attivare un DAG denominato sample_quickstart
con l'ID 5077
nel tuo ambiente Cloud Composer:
gcloud composer environments run example-environment \
--location us-central1 dags trigger -- sample_quickstart \
--run-id=5077
Esecuzione di comandi in un ambiente IP privato
Nelle versioni di Cloud Composer precedenti alla 2.4.0:
Per eseguire i comandi della CLI di Airflow in un ambiente IP privato, esegui questi comandi su una macchina che può accedere all'endpoint del control plane del cluster GKE. Le opzioni possono variare a seconda della configurazione del cluster privato.
Se l'accesso all'endpoint pubblico è disattivato nel cluster del tuo ambiente,
non è possibile utilizzare i comandi gcloud composer
per eseguire Airflow CLI.
Per poter eseguire i comandi dell'interfaccia a riga di comando di Airflow, segui questi passaggi:
- Crea una VM nella rete VPC
Acquisisci le credenziali del cluster. Esegui questo comando:
gcloud container clusters get-credentials CLUSTER_NAME \ --region REGION \ --project PROJECT \ --internal-ip
Utilizza 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 workload o utilizzando il comando kubectl get namespaces
.
Se l'accesso all'endpoint pubblico è abilitato nel cluster del tuo ambiente, puoi anche eseguire i comandi della CLI di Airflow da una macchina con un indirizzo IP esterno aggiunto alle reti autorizzate. Per attivare l'accesso dalla tua macchina, aggiungi l'indirizzo esterno della tua macchina all'elenco delle reti autorizzate del tuo ambiente.
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 è presente connettività di rete da un computer su 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
.
Eseguire i comandi della CLI Airflow tramite l'API Cloud Composer
A partire dalla versione 2.4.0 di Cloud Composer, 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 del tuo ambiente.AIRFLOW_COMMAND
: il comando dell'interfaccia a riga di comando di Airflow che vuoi eseguire, ad esempiodags
.AIRFLOW_SUBCOMMAND
: sottocomando per il comando dell'interfaccia a riga di comando di Airflow che vuoi eseguire, ad esempiolist
.- (facoltativo)
SUBCOMMAND_PARAMETER
: parametri per il sottocomando. Se vuoi utilizzare più di un parametro, aggiungi altri elementi 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, verifica se
il comando è stato completato correttamente effettuando una
richiesta PollAirflowCommand e controllando i
campi in exitInfo
per errori e codici di stato. Il campo output
contiene
righe di log.
Per ottenere lo stato di esecuzione del comando e recuperare i log, 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
}