Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Riferimento al comando CLI di Apache Airflow
Questo argomento descrive i comandi CLI di Apache Airflow supportati e non supportati su Amazon Managed Workflows for Apache Airflow.
Suggerimento
L'API REST è più moderna della CLI ed è progettata per l'integrazione programmatica con sistemi esterni. REST è il modo preferito per interagire con Apache Airflow.
Indice
Prerequisiti
La sezione seguente descrive i passaggi preliminari necessari per utilizzare i comandi e gli script in questa pagina.
Accesso
-
Account AWS accesso in AWS Identity and Access Management (IAM) alla politica delle autorizzazioni di Amazon MWAA in. Politica di accesso all'interfaccia utente di Apache Airflow: AmazonMWAAWebServerAccess
-
Account AWS accesso in AWS Identity and Access Management (IAM) alla politica delle autorizzazioni di Amazon MWAA. Politica completa di accesso alle API e alla console: AmazonMWAAFullApiAccess
AWS CLI
AWS Command Line Interface (AWS CLI) è uno strumento open source che puoi utilizzare per interagire con i AWS servizi utilizzando i comandi nella shell della riga di comando. Per completare i passaggi indicati in questa pagina, è necessario quanto segue:
Cosa è cambiato?
-
v3: architettura Airflow. Apache Airflow v3 introduce importanti modifiche all'architettura per fornire maggiore sicurezza e scalabilità e per semplificare la manutenzione. Per saperne di più, consulta Upgrade to Airflow 3. https://airflow.apache.org/docs/apache-airflow/stable/installation/upgrading_to_airflow3.html
-
v2: struttura dei comandi CLI Airflow. L'interfaccia della riga di comando di Apache Airflow v2 è organizzata in modo che i comandi correlati siano raggruppati come sottocomandi, il che significa che è necessario aggiornare gli script di Apache Airflow v1 se si desidera eseguire l'aggiornamento ad Apache Airflow v2. Ad esempio, in Apache Airflow v1 si trova in Apache Airflow v2.
unpausedags unpausePer saperne di più, consulta le modifiche alla CLI di Airflow in 2.0.
Comandi CLI supportati
La sezione seguente elenca i comandi CLI di Apache Airflow disponibili su Amazon MWAA.
Comandi supportati
Utilizzo di comandi che analizzano i DAG
Se nell'ambiente è in esecuzione Apache Airflow v2.0.2, i comandi CLI che analizzano i DAG avranno esito negativo se il DAG utilizza plugin che dipendono dai pacchetti installati tramite un: requirements.txt
Apache Airflow v2.0.2
-
dags backfill -
dags list -
dags list-runs -
dags next-execution
Puoi usare questi comandi CLI se i tuoi DAG non utilizzano plugin che dipendono da pacchetti installati tramite un. requirements.txt
Codice di esempio
La sezione seguente contiene esempi di diversi modi di utilizzare la CLI di Apache Airflow.
Impostare, recuperare o eliminare una variabile Apache Airflow v2
È possibile utilizzare il seguente codice di esempio per impostare, ottenere o eliminare una variabile nel formato di. <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
Aggiungete una configurazione quando attivate un DAG
È possibile utilizzare il seguente codice di esempio con Apache Airflow v2 per aggiungere una configurazione quando si attiva un DAG, ad esempio. 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)
Esegui i comandi CLI su un tunnel SSH verso un host bastion
Usa l'esempio seguente per eseguire i comandi CLI Airflow utilizzando un proxy tunnel SSH su un Linux Bastion Host.
Usare 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