Referencia de los comandos de la CLI de Apache Airflow
En esta página, se describen los comandos de la CLI de Apache Airflow compatibles y no compatibles en Amazon Managed Workflows para Apache Airflow.
sugerencia
La REST de API 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
-
Acceso de la cuenta de Cuenta de AWS en 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: AmazonMWAAWebServerAccess.
-
Acceso de la cuenta de Cuenta de AWS en AWS Identity and Access Management (IAM) a la política de permisos Política de acceso completo a la consola y a las API: AmazonMWAAFullApiAccess de Amazon MWAA.
AWS CLI
La AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que le permite interactuar con los servicios de AWS mediante el uso de comandos en el shell de la línea de comandos. Para completar los pasos de esta página, necesita lo siguiente:
¿Qué ha cambiado?
-
v3: arquitectura Airflow. 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 de la 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 esdags unpauseen Apache Airflow v2. Para obtener más información, consulte los cambios de la CLI de Airflow 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 los DAG
Si su entorno ejecuta Apache Airflow v2.0.2, los comandos de la CLI que analizan los DAG arrojarán error si el DAG usa complementos que dependen de paquetes instalados mediante un requirements.txt:
Apache Airflow v2.0.2
-
dags backfill -
dags list -
dags list-runs -
dags next-execution
Puede utilizar estos comandos de la CLI si sus DAG no utilizan complementos que dependan de paquetes instalados a través de un requirements.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 añadir 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
Use el siguiente ejemplo para ejecutar los comandos de la CLI de Airflow mediante un proxy de túnel SSH en un host bastión 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