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
Esta página descreve os comandos da CLI do Apache Airflow compatíveis e não compatíveis no Amazon Managed Workflows para Apache Airflow.
Pré-requisitos
A seção a seguir descreve as etapas preliminares necessárias para usar os comandos e scripts desta página.
Acesso
-
AWS acesso à conta AWS Identity and Access Management (IAM) à política de permissões do Amazon MWAA em. Política de acesso ao Apache Airflow UI: AmazonMWA WebServerAccess
-
AWS acesso à conta AWS Identity and Access Management (IAM) à política de permissões do Amazon MWAA. Política completa de acesso à API e ao console: AmazonMWAA FullApiAccess
AWS CLI
O AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que permite que você interaja 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 na v2
-
Novo: estrutura de comandos 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,
unpause
no Apache Airflow v1 agora édags unpause
no Apache Airflow v2. Para saber mais, consulte Alterações na CLI do Airflow em 2no Guia de referência do Apache Airflow.
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
Como usar comandos que analisam DAGs
Se seu ambiente estiver executando o Apache Airflow v1.10.12 ou v2.0.2, os comandos da CLI que analisam DAGs 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 estes comandos da CLI se seus DAGs não usarem 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 v1 e 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
O exemplo a seguir mostra como executar comandos da Airflow CLI usando um proxy de túnel SSH para um Linux Bastion Host.
Como usar cURL
-
ssh -D 8080 -f -C -q -N
YOUR_USER
@YOUR_BASTION_HOST
-
curl -x socks5h://0:8080 --request POST https://
YOUR_HOST_NAME
/aws_mwaa/cli --headerYOUR_HEADERS
--data-rawYOUR_CLI_COMMAND