As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Referência de comandos da CLI do Apache Airflow
Este tópico descreve os comandos da CLI do Apache Airflow compatíveis e não suportados nos fluxos de trabalho gerenciados da Amazon para o Apache Airflow.
dica
A API REST é mais moderna que a CLI e foi projetada para integração programática com sistemas externos. REST é a forma preferida de interagir com o Apache Airflow.
Sumário
Pré-requisitos
A seção a seguir descreve as etapas preliminares necessárias para usar os comandos e scripts desta página.
Acesso
-
Conta da AWS acesso AWS Identity and Access Management (IAM) à política de permissões do Amazon MWAA em. Política de acesso ao Apache Airflow UI: Amazon MWAAWeb ServerAccess
-
Conta da AWS acesso AWS Identity and Access Management (IAM) à política de permissões do Amazon MWAA. Política completa de acesso à API e ao console: Amazon MWAAFull ApiAccess
AWS CLI
O AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que você pode usar para interagir com AWS serviços usando comandos em seu shell de linha de comando. Para concluir as etapas nesta página, é necessário o seguinte:
O que mudou?
-
v3: Arquitetura de fluxo de ar. O Apache Airflow v3 introduz mudanças arquitetônicas revolucionárias para oferecer maior segurança e escalabilidade, além de facilitar a manutenção. Para saber mais, consulte Atualizando para o Airflow 3
. -
v2: Estrutura de comando da CLI do Airflow. A CLI do Apache Airflow v2 é organizada para que os comandos relacionados sejam agrupados como subcomandos, o que significa que você precisa atualizar os scripts do Apache Airflow v1 se quiser atualizar para o Apache Airflow v2. Por exemplo,
unpauseno Apache Airflow v1 está nodags unpauseApache Airflow v2. Para saber mais, consulte as alterações da CLI do Airflowna versão 2.0.
Comandos CLI compatíveis
A seção a seguir lista os comandos da CLI do Apache Airflow disponíveis no Amazon MWAA.
Comandos compatíveis
Usando comandos que analisam DAGs
Se seu ambiente estiver executando o Apache Airflow v2.0.2, os comandos da CLI que DAGs analisam falharão se o DAG usar plug-ins que dependem de pacotes instalados por meio de: requirements.txt
Apache Airflow v2.0.2
-
dags backfill -
dags list -
dags list-runs -
dags next-execution
Você pode usar esses comandos da CLI se DAGs não usar plug-ins que dependam de pacotes instalados por meio de um. requirements.txt
Código de exemplo
A seção a seguir contém exemplos de maneiras diferentes de usar a CLI do Apache Airflow.
Definir, obter ou excluir uma variável do Apache Airflow v2
É possível usar o código de exemplo a seguir para definir, obter ou excluir uma variável no formato de <script> <mwaa env name> get | set | delete <variable> <variable value> </variable> </variable>.
[ $# -eq 0 ] && echo "Usage: $0 MWAA environment name " && exit if [[ $2 == "" ]]; then dag="variables list" elif [ $2 == "get" ] || [ $2 == "delete" ] || [ $2 == "set" ]; then dag="variables $2 $3 $4 $5" else echo "Not a valid command" exit 1 fi CLI_JSON=$(aws mwaa --region $AWS_REGION create-cli-token --name $1) \ && CLI_TOKEN=$(echo $CLI_JSON | jq -r '.CliToken') \ && WEB_SERVER_HOSTNAME=$(echo $CLI_JSON | jq -r '.WebServerHostname') \ && CLI_RESULTS=$(curl --request POST "https://$WEB_SERVER_HOSTNAME/aws_mwaa/cli" \ --header "Authorization: Bearer $CLI_TOKEN" \ --header "Content-Type: text/plain" \ --data-raw "$dag" ) \ && echo "Output:" \ && echo $CLI_RESULTS | jq -r '.stdout' | base64 --decode \ && echo "Errors:" \ && echo $CLI_RESULTS | jq -r '.stderr' | base64 --decode
Adicionar uma configuração ao acionar um DAG
Você pode usar o código de exemplo a seguir com o Apache Airflow v2 para adicionar uma configuração ao acionar um DAG, como. airflow trigger_dag 'dag_name' —conf '{"key":"value"}'
import boto3 import json import requests import base64 mwaa_env_name = 'YOUR_ENVIRONMENT_NAME' dag_name = 'YOUR_DAG_NAME' key = "YOUR_KEY" value = "YOUR_VALUE" conf = "{\"" + key + "\":\"" + value + "\"}" client = boto3.client('mwaa') mwaa_cli_token = client.create_cli_token( Name=mwaa_env_name ) mwaa_auth_token = 'Bearer ' + mwaa_cli_token['CliToken'] mwaa_webserver_hostname = 'https://{0}/aws_mwaa/cli'.format(mwaa_cli_token['WebServerHostname']) raw_data = "trigger_dag {0} -c '{1}'".format(dag_name, conf) mwaa_response = requests.post( mwaa_webserver_hostname, headers={ 'Authorization': mwaa_auth_token, 'Content-Type': 'text/plain' }, data=raw_data ) mwaa_std_err_message = base64.b64decode(mwaa_response.json()['stderr']).decode('utf8') mwaa_std_out_message = base64.b64decode(mwaa_response.json()['stdout']).decode('utf8') print(mwaa_response.status_code) print(mwaa_std_err_message) print(mwaa_std_out_message)
Execute comandos CLI em um túnel SSH para um bastion host
Use o exemplo a seguir para executar comandos da CLI do Airflow usando um proxy de túnel SSH para um Linux Bastion Host.
Como usar cURL
-
ssh -D 8080 -f -C -q -NYOUR_USER@YOUR_BASTION_HOST -
curl -x socks5h://0:8080 --request POST https://YOUR_HOST_NAME/aws_mwaa/cli --headerYOUR_HEADERS--data-rawYOUR_CLI_COMMAND