Acessar a interface de linha de comando do Airflow

Cloud Composer 1 | Cloud Composer 2

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, você precisa acessar o 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 ambiente
  • LOCATION 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 da CLI compostos 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 da versão 2.4.0 do Cloud Composer, é possível executar comandos da CLI do Airflow em um ambiente de IP particular sem configuração adicional. A máquina não precisa de acesso ao endpoint do plano de controle do cluster do ambiente 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 particular, execute-os em uma máquina que possa acessar o endpoint do plano de controle do cluster do GKE. 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 os comandos gcloud composer para executar a CLI do Airflow. Para executar comandos da CLI do Airflow, siga estas etapas:

  1. Crie uma VM na sua rede VPC
  2. Adquirir as credenciais do cluster. Execute este comando: 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 seu ambiente, também será possível executar comandos da CLI do Airflow em uma máquina com um endereço IP externo adicionado às redes autorizadas. Para ativar o acesso pela máquina, adicione o endereço externo da máquina à lista de redes autorizadas do seu ambiente.

executar comandos da CLI do Airflow pela API Cloud Composer

A partir da versão 2.4.0 do Cloud Composer, é possível executar comandos da CLI do Airflow por meio da 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: o comando da CLI do Airflow que você quer executar, como dags.
  • AIRFLOW_SUBCOMMAND: subcomando para o comando da CLI do Airflow que você quer executar, como list.
  • (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 enquete

Depois de executar um comando da CLI do Airflow pela API Cloud Composer, verifique se ele foi concluído fazendo uma solicitação PollAirflowCommand e inspecionando os campos em exitInfo em busca de erros e códigos de status. O campo output contém linhas de registro.

Para receber 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 com o plano de controle do cluster

Ao executar os comandos gcloud composer environments run ou kubectl, você pode encontrar 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á conectividade de rede 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 em Tempo limite do comando kubectl.