Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
O Apache Airflow tem uma interface de linha de comando (CLI) que pode ser usada para realizar tarefas, como acionar e gerenciar DAGs, receber informações sobre execuções e tarefas do DAG, adicionar e excluir conexões e usuários.
Sobre as versões de sintaxe da CLI
O Airflow no Cloud Composer 2 usa a sintaxe da CLI do Airflow 2.
Comandos compatíveis da CLI do Airflow
Para ver uma lista completa de comandos compatíveis com a CLI do Airflow, consulte a referência gcloud composer environments run
.
Antes de começar
Você precisa ter permissões suficientes para usar a ferramenta de linha de comando
gcloud
com o Cloud Composer e executar comandos da CLI do Airflow. Para mais informações, consulte controle de acesso.Nas versões do Cloud Composer anteriores à 2.4.0, é necessário acesso ao plano de controle do cluster do ambiente para executar comandos da CLI do Airflow.
Executar comandos da CLI do Airflow
Para executar comandos da CLI do Airflow nos seus ambientes, use gcloud
:
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
SUBCOMMAND \
-- SUBCOMMAND_ARGUMENTS
Substitua:
ENVIRONMENT_NAME
pelo nome do ambienteLOCATION
pela região em que o ambiente está localizado;SUBCOMMAND
por um dos comandos compatíveis da CLI do Airflow;SUBCOMMAND_ARGUMENTS
com argumentos para o comando da CLI do Airflow.
Separador de argumentos de subcomando
Separe os argumentos do comando da CLI do Airflow especificado com --
:
Airflow 2
Para a sintaxe da CLI do Airflow 2:
- Especifique comandos compostos da CLI como um subcomando.
- Especifique qualquer argumento para comandos compostos como argumentos de subcomando,
após um separador
--
.
gcloud composer environments run example-environment \
dags list -- --output=json
Airflow 1
O Cloud Composer 2 é compatível apenas com o Airflow 2.
Local padrão
A maioria dos comandos gcloud composer
requer um local. Especifique o local com a sinalização --location
ou definindo o local padrão.
Exemplo
Por exemplo, para acionar um DAG chamado sample_quickstart
com o ID 5077
no seu ambiente do Cloud Composer:
Airflow 2
gcloud composer environments run example-environment \
--location us-central1 dags trigger -- sample_quickstart \
--run-id=5077
Airflow 1
O Cloud Composer 2 é compatível apenas com o Airflow 2.
Como executar comandos em um ambiente de IP particular
A partir do Cloud Composer versão 2.4.0, é possível executar a CLI do Airflow em um ambiente de IP privado sem configuração adicional. Seu máquina não precisa de acesso ao plano de controle do cluster do ambiente endpoint para executar esses comandos.
Nas versões do Cloud Composer anteriores à 2.4.0:
Para executar comandos da CLI do Airflow em um ambiente de IP privado, faça o seguinte: executá-los em uma máquina que pode acessar o cluster do GKE endpoint do plano de controle. Suas opções podem variar dependendo da sua configuração de cluster particular.
Se o acesso ao endpoint público estiver desativado no cluster do seu ambiente,
não será possível usar comandos gcloud composer
para executar a CLI do Airflow.
Para executar os comandos da CLI do Airflow, siga estas etapas:
- Crie uma VM na sua rede VPC
- Adquira as credenciais do cluster. Execute o comando a seguir:
bash gcloud container clusters get-credentials CLUSTER_NAME \ --region REGION \ --project PROJECT \ --internal-ip
- Use
kubectl
para executar o comando do Airflow. Exemplo:
kubectl exec deployment/airflow-scheduler -n COMPOSER_NAMESPACE \
--container airflow-scheduler -- airflow dags list
Substitua COMPOSER_NAMESPACE
por um namespace semelhante a:
composer-2-0-28-airflow-2-3-394zxc12411
. Encontre o Cloud Composer
na lista de cargas de trabalho ou usando o comando kubectl get namespaces
.
Se o acesso ao endpoint público estiver ativado no cluster do ambiente, será possível também pode executar comandos da CLI do Airflow em uma máquina com um endereço IP externo às redes autorizadas. Para ativar o acesso pela sua máquina, adicione o endereço externo da sua máquina para o endereço IP lista de redes autorizadas.
Executar comandos da CLI do Airflow pela API do Cloud Composer
A partir da versão 2.4.0 do Cloud Composer, é possível executar comandos da CLI do Airflow pela API Cloud Composer.
Executar um comando
Crie uma solicitação de API environments.executeAirflowCommand
:
{
"environment": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"command": "AIRFLOW_COMMAND",
"subcommand": "AIRFLOW_SUBCOMMAND",
"parameters": [
"SUBCOMMAND_PARAMETER"
]
}
Substitua:
PROJECT_ID
: o ID do projeto.LOCATION
: a região em que o ambiente está localizado.ENVIRONMENT_NAME
: o nome do ambiente;AIRFLOW_COMMAND
: comando da CLI do Airflow que você quer executar, comodags
.AIRFLOW_SUBCOMMAND
: subcomando do comando da CLI do Airflow que você quer executar, comolist
.- (opcional)
SUBCOMMAND_PARAMETER
: parâmetros para o subcomando. Se você quiser usar mais de um parâmetro, adicione mais itens à lista.
Exemplo:
// 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"
]
}
Status do comando de pesquisa
Depois de executar um comando da CLI do Airflow pela API Cloud Composer, verifique se
o comando foi concluído com sucesso fazendo uma
PollAirflowCommand e inspecionar os
campos em exitInfo
para erros e códigos de status. O campo output
contém
linhas de registro.
Para conferir o status de execução do comando e buscar registros, forneça os valores executionId
,
pod
e podNamespace
retornados por ExecuteAirflowCommandRequest
:
Exemplo:
// 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
}
Solução de problemas
Sem conectividade ao plano de controle do cluster
Ao executar gcloud composer environments run
ou kubectl
, talvez você encontre o seguinte erro:
Get "https://<IP Address>/api?timeout=32s": dial tcp <IP Address>:443: i/o timeout"
Sintoma: essa mensagem de erro indica que não há rede. conectividade de um computador em que você executa esses comandos.
Solução: siga as diretrizes apresentadas na seção
Como executar comandos em um ambiente de IP particular
ou use as instruções disponíveis na seção
O comando kubectl
expira.