Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Référence de CLI commande Apache Airflow
Cette rubrique décrit les CLI commandes Apache Airflow prises en charge et non prises en charge sur Amazon Managed Workflows pour Apache Airflow.
Table des matières
Prérequis
La section suivante décrit les étapes préliminaires requises pour utiliser les commandes et les scripts de cette page.
Accès
-
AWS accès au compte dans AWS Identity and Access Management (IAM) à la politique d'MWAAautorisation d'Amazon dansPolitique d'accès à l'interface utilisateur d'Apache Airflow : A mazonMWAAWeb ServerAccess.
-
AWS accès au compte dans AWS Identity and Access Management (IAM) conformément à la politique d'MWAAautorisation d'AmazonPolitique d'accès complet API et à la console : A mazonMWAAFull ApiAccess.
AWS CLI
The AWS Command Line Interface (AWS CLI) est un outil open source qui vous permet d'interagir avec les AWS services à l'aide de commandes dans votre shell de ligne de commande. Pour effectuer les étapes indiquées sur cette page, vous avez besoin des éléments suivants :
Ce qui a changé dans la version 2
-
Nouveau : structure de CLI commande Airflow. Apache Airflow v2 CLI est organisé de telle sorte que les commandes associées sont regroupées sous forme de sous-commandes, ce qui signifie que vous devez mettre à jour les scripts Apache Airflow v1 si vous souhaitez passer à Apache Airflow v2. Par exemple,
unpause
dans Apache Airflow v1, c'est maintenantdags unpause
dans Apache Airflow v2. Pour en savoir plus, consultez la section 2 des CLI modifications apportées au flux d'airdans le guide de référence d'Apache Airflow.
CLICommandes prises en charge
La section suivante répertorie les CLI commandes Apache Airflow disponibles sur AmazonMWAA.
Commandes prises en charge
Utilisation de commandes qui analysent DAGs
Si votre environnement exécute Apache Airflow v1.10.12 ou v2.0.2, CLI les commandes d'analyse DAGs échoueront si elles utilisent des plugins qui dépendent de DAG packages installés via un : requirements.txt
Apache Airflow v2.0.2
-
dags backfill
-
dags list
-
dags list-runs
-
dags next-execution
Vous pouvez utiliser ces CLI commandes si vous DAGs n'utilisez pas de plugins qui dépendent de packages installés via unrequirements.txt
.
Exemple de code
La section suivante contient des exemples de différentes manières d'utiliser Apache AirflowCLI.
Définir, obtenir ou supprimer une variable Apache Airflow v2
Vous pouvez utiliser l'exemple de code suivant pour définir, obtenir ou supprimer une variable au format 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
Ajoutez une configuration lors du déclenchement d'un DAG
Vous pouvez utiliser l'exemple de code suivant avec Apache Airflow v1 et Apache Airflow v2 pour ajouter une configuration lors du déclenchement d'unDAG, tel que. 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)
Exécuter CLI des commandes sur un SSH tunnel vers un hôte bastion
L'exemple suivant montre comment exécuter des CLI commandes Airflow à l'aide d'un proxy de SSH tunnel vers un hôte Linux Bastion.
Utilisation de 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