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à.
Puoi utilizzare i comandi in questa pagina per generare un token CLI e quindi effettuare chiamate all'API Amazon Managed Workflows for Apache Airflow direttamente nella shell di comando. Ad esempio, puoi ottenere un token e quindi distribuirlo a livello di DAGs codice utilizzando Amazon MWAA. APIs La sezione seguente include i passaggi per creare un token CLI Apache Airflow utilizzando uno script curl AWS CLI, uno script Python o uno script bash. Il token restituito nella risposta è valido per 60 secondi.
Nota
Il AWS CLI token è inteso come sostituto delle azioni della shell sincrone, non dei comandi API asincroni. Pertanto, la concorrenza disponibile è limitata. Per garantire che il server Web rimanga reattivo per gli utenti, si consiglia di non aprire una nuova AWS CLI richiesta finché la precedente non viene completata correttamente.
Indice
Prerequisiti
La sezione seguente descrive i passaggi preliminari necessari per utilizzare i comandi e gli script in questa pagina.
Accesso
-
AWS accesso tramite account AWS Identity and Access Management (IAM) alla policy di autorizzazione di Amazon MWAA in. Politica di accesso all'interfaccia utente di Apache Airflow: Amazon MWAAWeb ServerAccess
-
AWS accesso tramite account AWS Identity and Access Management (IAM) alla policy di autorizzazione di Amazon MWAA. Politica completa di accesso all'API e alla console: Amazon MWAAFull ApiAccess
AWS CLI
Il AWS Command Line Interface (AWS CLI) è uno strumento open source che consente di interagire con i AWS servizi utilizzando i comandi nella shell della riga di comando. Per completare la procedura descritta in questa pagina, è necessario quanto segue:
Utilizzando il AWS CLI
L'esempio seguente utilizza il create-cli-tokencomando in AWS CLI per creare un token CLI Apache Airflow.
aws mwaa create-cli-token --name
YOUR_ENVIRONMENT_NAME
Utilizzo di uno script curl
L'esempio seguente utilizza uno script curl per chiamare il create-web-login-tokencomando in per AWS CLI richiamare la CLI Apache Airflow tramite un endpoint sul server web Apache Airflow.
-
Copia l'istruzione curl dal tuo file di testo e incollala nella shell dei comandi.
Nota
Dopo averla copiata negli appunti, potrebbe essere necessario utilizzare Modifica > Incolla dal menu della shell.
CLI_JSON=$(aws mwaa --region
YOUR_REGION
create-cli-token --nameYOUR_ENVIRONMENT_NAME
) \ && 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 "dags triggerYOUR_DAG_NAME
") \ && echo "Output:" \ && echo $CLI_RESULTS | jq -r '.stdout' | base64 --decode \ && echo "Errors:" \ && echo $CLI_RESULTS | jq -r '.stderr' | base64 --decode -
Sostituite i segnaposti
YOUR_REGION
con la AWS regione del vostro ambiente, e.YOUR_DAG_NAME
YOUR_ENVIRONMENT_NAME
Ad esempio, un nome host per una rete pubblica può avere il seguente aspetto (senza https://):123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
-
Dovresti vedere quanto segue nel prompt dei comandi:
{ "stderr":"<STDERR of the CLI execution (if any), base64 encoded>", "stdout":"<STDOUT of the CLI execution, base64 encoded>" }
Usare uno script bash
L'esempio seguente utilizza uno script bash per chiamare il create-cli-tokencomando in per AWS CLI creare un token CLI Apache Airflow.
-
Copia il contenuto del seguente esempio di codice e salvalo localmente come.
get-cli-token.sh
# brew install jq aws mwaa create-cli-token --name
YOUR_ENVIRONMENT_NAME
| export CLI_TOKEN=$(jq -r .CliToken) && curl --request POST "https://YOUR_HOST_NAME
/aws_mwaa/cli" \ --header "Authorization: Bearer $CLI_TOKEN" \ --header "Content-Type: text/plain" \ --data-raw "dags triggerYOUR_DAG_NAME
" -
Sostituite i segnaposto in
red
YOUR_ENVIRONMENT_NAME
,YOUR_HOST_NAME
e.YOUR_DAG_NAME
Ad esempio, un nome host per una rete pubblica può avere il seguente aspetto (senza https://):123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
-
(opzionale) Gli utenti macOS e Linux potrebbero dover eseguire il comando seguente per assicurarsi che lo script sia eseguibile.
chmod +x get-cli-token.sh
-
Esegui lo script seguente per creare un token CLI Apache Airflow.
./get-cli-token.sh
Usare uno script Python
L'esempio seguente utilizza il metodo boto3 create_cli_token in uno script Python per creare un token
-
Copia il contenuto del seguente esempio di codice e salvalo localmente come.
create-cli-token.py
""" Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ import boto3 import json import requests import base64 mwaa_env_name = 'YOUR_ENVIRONMENT_NAME' dag_name = 'YOUR_DAG_NAME' mwaa_cli_command = 'dags trigger' 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 = '{0} {1}'.format(mwaa_cli_command, dag_name) 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)
-
Sostituite i segnaposti con e.
YOUR_ENVIRONMENT_NAME
YOUR_DAG_NAME
-
Esegui lo script seguente per creare un token CLI Apache Airflow.
python3 create-cli-token.py
Fasi successive
-
Esplora l'operazione dell'API Amazon MWAA utilizzata per creare un token CLI su. CreateCliToken