Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Referencia de los comandos de la CLI de Apache Airflow
En este tema se describen los comandos de la CLI de Apache Airflow compatibles y no compatibles en Amazon Managed Workflows for Apache Airflow.
sugerencia
La API REST es más moderna que la CLI y está diseñada para la integración programática con sistemas externos. REST es la forma preferida de interactuar con Apache Airflow.
Contenido
Requisitos previos
En la siguiente sección se describen los pasos preliminares necesarios para utilizar los comandos y scripts de esta página.
Acceso
-
Cuenta de AWS acceso AWS Identity and Access Management (IAM) a la política de permisos de Amazon MWAA en. Política de acceso a la interfaz de usuario de Apache Airflow: Amazon MWAAWeb ServerAccess
-
Cuenta de AWS acceso AWS Identity and Access Management (IAM) a la política de permisos de Amazon MWAA. Política completa de acceso a la consola y a la API: Amazon MWAAFull ApiAccess
AWS CLI
El AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que puede utilizar para interactuar con los AWS servicios mediante comandos de su shell de línea de comandos. Para completar los pasos de esta página, necesita lo siguiente:
¿Qué ha cambiado?
-
v3: Arquitectura de flujo de aire. Apache Airflow v3 introduce cambios arquitectónicos de última generación para mejorar la seguridad y la escalabilidad y facilitar el mantenimiento. Para obtener más información, consulte Actualización a Airflow 3.
-
v2: Estructura de comandos CLI de Airflow. La CLI de Apache Airflow v2 está organizada de manera que los comandos relacionados se agrupan como subcomandos, lo que significa que debe actualizar los scripts de Apache Airflow v1 si desea actualizar a Apache Airflow v2. Por ejemplo,
unpauseen Apache Airflow v1 estádags unpauseen Apache Airflow v2. Para obtener más información, consulte los cambios de la CLI de Airflow en la versión 2.0.
Comandos de la CLI admitidos
En la siguiente sección, se enumeran los comandos de la CLI de Apache Airflow disponibles en Amazon MWAA.
Comandos admitidos
Uso de comandos que analizan DAGs
Si su entorno ejecuta Apache Airflow v2.0.2, los comandos de CLI que se DAGs analizan fallarán si el DAG usa complementos que dependen de paquetes instalados a través de: requirements.txt
Apache Airflow v2.0.2
-
dags backfill -
dags list -
dags list-runs -
dags next-execution
Puede usar estos comandos CLI si DAGs no usa complementos que dependan de paquetes instalados a través de unrequirements.txt.
Código de muestra
La siguiente sección contiene ejemplos de diferentes formas de utilizar la CLI de Apache Airflow.
Cómo configurar, obtener o eliminar una variable de Apache Airflow v2
Puede utilizar el siguiente código de muestra para establecer, obtener o eliminar una variable con el 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
Cómo agregar una configuración al activar un DAG
Puede usar el siguiente código de ejemplo con Apache Airflow v2 para agregar una configuración al activar un DAG, por ejemplo. 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)
Ejecución de comandos de la CLI en un túnel SSH hacia un host bastión
Utilice el siguiente ejemplo para ejecutar los comandos CLI de Airflow mediante un proxy de túnel SSH en un host Bastion de Linux.
Uso de 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