Creazione di un token CLI di Apache Airflow - Amazon Managed Workflows for Apache Airflow

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à.

Creazione di un token CLI di Apache Airflow

Puoi utilizzare i comandi di questa pagina per generare un token CLI e quindi effettuare chiamate all'API Amazon Managed Workflows for Apache Airflow direttamente nella shell dei comandi. Ad esempio, puoi ottenere un token, quindi distribuire i DAG a livello di codice utilizzando le API Amazon MWAA. La sezione seguente include i passaggi per creare un token CLI di Apache Airflow utilizzando loAWS CLI script curl, uno script Python o uno script bash. Il token restituito nella risposta è valido per 60 secondi.

Nota

IlAWS CLI token è inteso come sostituto delle azioni shell sincrone, non dei comandi API asincroni. Pertanto, la concorrenza disponibile è limitata. Per garantire che il server Web continui a rispondere agli utenti, si consiglia di non aprire una nuovaAWS CLI richiesta fino a quando quella precedente non viene completata correttamente.

Prerequisiti

La sezione seguente descrive i passaggi preliminari necessari per utilizzare i comandi e gli script di questa pagina.

Accesso

AWS CLI

AWS Command Line Interface (AWS CLI) è uno strumento open source che consente di interagire con i servizi AWS utilizzando i comandi nella shell a riga di comando. Per completare le fasi di questa pagina, è necessario quanto segue:

Utilizzo di AWS CLI

L'esempio seguente utilizza il create-cli-tokencomando inAWS CLI per creare un token CLI di Apache Airflow.

aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME

Usare uno script curl

L'esempio seguente utilizza uno script curl per chiamare il create-web-login-tokencomando inAWS CLI per richiamare l'interfaccia a riga di comando di Apache Airflow tramite un endpoint sul server web Apache Airflow.

Apache Airflow v2
  1. Copia l'istruzione curl dal tuo file di testo e incollala nella shell dei comandi.

    Nota

    Dopo averlo copiato negli appunti, potrebbe essere necessario utilizzare Modifica > Incolla dal menu della shell.

    CLI_JSON=$(aws mwaa --region YOUR_REGION create-cli-token --name YOUR_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 trigger YOUR_DAG_NAME") \ && echo "Output:" \ && echo $CLI_RESULTS | jq -r '.stdout' | base64 --decode \ && echo "Errors:" \ && echo $CLI_RESULTS | jq -r '.stderr' | base64 --decode
  2. Sostituisci i segnapostiYOUR_REGION con laAWS regione per il tuo ambienteYOUR_DAG_NAME, eYOUR_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
  3. Nel prompt dei comandi:

    { "stderr":"<STDERR of the CLI execution (if any), base64 encoded>", "stdout":"<STDOUT of the CLI execution, base64 encoded>" }
Apache Airflow v1
  1. Copia l'istruzione cURL dal tuo file di testo e incollala nella shell dei comandi.

    Nota

    Dopo averlo copiato negli appunti, potrebbe essere necessario utilizzare Modifica > Incolla dal menu della shell.

    CLI_JSON=$(aws mwaa --region YOUR_REGION create-cli-token --name YOUR_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 "trigger_dag YOUR_DAG_NAME") \ && echo "Output:" \ && echo $CLI_RESULTS | jq -r '.stdout' | base64 --decode \ && echo "Errors:" \ && echo $CLI_RESULTS | jq -r '.stderr' | base64 --decode
  2. Sostituisci i segnapostiYOUR_REGION con laAWS regione per il tuo ambienteYOUR_DAG_NAME, eYOUR_HOST_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
  3. Nel prompt dei comandi:

    { "stderr":"<STDERR of the CLI execution (if any), base64 encoded>", "stdout":"<STDOUT of the CLI execution, base64 encoded>" }
  4. Sostituisci i segnaposti conYOUR_ENVIRONMENT_NAME eYOUR_DAG_NAME.

Usare uno script bash

L'esempio seguente utilizza uno script bash per chiamare il create-cli-tokencomando inAWS CLI per creare un token CLI di Apache Airflow.

Apache Airflow v2
  1. Copiare il seguente esempio di codice e salvare localmente comeget-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 trigger YOUR_DAG_NAME"
  2. Sostituisci i segnaposti in rosso conYOUR_ENVIRONMENT_NAMEYOUR_HOST_NAME, eYOUR_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
  3. (opzionale) Gli utenti macOS e Linux potrebbero dover eseguire il seguente comando per assicurarsi che lo script sia eseguibile.

    chmod +x get-cli-token.sh
  4. Eseguire lo script seguente per creare un token CLI Apache Airflow.

    ./get-cli-token.sh
Apache Airflow v1
  1. Copiare il seguente esempio di codice e salvare localmente comeget-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 "trigger_dag YOUR_DAG_NAME"
  2. Sostituisci i segnaposti in rosso conYOUR_ENVIRONMENT_NAMEYOUR_HOST_NAME, eYOUR_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
  3. (opzionale) Gli utenti macOS e Linux potrebbero dover eseguire il seguente comando per assicurarsi che lo script sia eseguibile.

    chmod +x get-cli-token.sh
  4. Eseguire 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 CLI di Apache Airflow e attivare un DAG. Puoi eseguire questo script al di fuori di Amazon MWAA. L'unica cosa che rimane da fare è installare la libreria boto3. Potresti voler creare un ambiente virtuale per installare la libreria. Si presuppone che tu abbia configurato le credenziali diAWS autenticazione per il tuo account.

Apache Airflow v2
  1. Copiare il seguente esempio di codice e salvare localmente comecreate-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)
  2. Sostituisci i segnaposti conYOUR_ENVIRONMENT_NAME eYOUR_DAG_NAME.

  3. Eseguire lo script seguente per creare un token CLI Apache Airflow.

    python3 create-cli-token.py
Apache Airflow v1
  1. Copiare il seguente esempio di codice e salvare localmente comecreate-cli-token.py.

    import boto3 import json import requests import base64 mwaa_env_name = 'YOUR_ENVIRONMENT_NAME' dag_name = 'YOUR_DAG_NAME' mwaa_cli_command = 'trigger_dag' 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)
  2. Sostituisci i segnaposti conYOUR_ENVIRONMENT_NAME eYOUR_DAG_NAME.

  3. Eseguire 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 all'indirizzo CreateCliToken.