Création d'un jeton CLI Apache Airflow - Amazon Managed Workflows for Apache Airflow

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.

Création d'un jeton CLI Apache Airflow

Vous pouvez utiliser les commandes de cette page pour générer un jeton CLI, puis effectuer des appels d'API Amazon Managed Workflows pour Apache Airflow directement dans votre interface de commande. Par exemple, vous pouvez obtenir un jeton, puis déployer des DAG par programmation à l'aide des API Amazon MWAA. La section suivante inclut les étapes permettant de créer un jeton CLI Apache Airflow à l'AWS CLIaide d'un script curl, d'un script Python ou d'un script bash. Le jeton renvoyé dans la réponse est valide pendant 60 secondes.

Note

LeAWS CLI jeton est destiné à remplacer les actions synchrones du shell, et non les commandes d'API asynchrones. En tant que telle, la simultanéité disponible est limitée. Pour garantir que le serveur Web reste réactif pour les utilisateurs, il est recommandé de ne pas ouvrir de nouvelleAWS CLI demande tant que la précédente ne s'est pas terminée correctement.

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 CLI

L'AWS Command Line Interface (AWS CLI) est un outil à code source libre qui vous permet d'interagir avec les services AWS à l'aide des commandes du terminal de ligne de commande. Pour effectuer les étapes de cette page, vous avez besoin des éléments suivants :

Utilisation du AWS CLI

L'exemple suivant utilise la create-cli-tokencommande duAWS CLI pour créer un jeton CLI Apache Airflow.

aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME

Utilisation d'un script curl

L'exemple suivant utilise un script curl pour appeler la create-web-login-tokencommande dans leAWS CLI afin d'appeler la CLI Apache Airflow via un point de terminaison sur le serveur Web Apache Airflow.

Apache Airflow v2
  1. Copiez l'instruction curl depuis votre fichier texte et collez-la dans votre interface de commande.

    Note

    Après l'avoir copié dans votre bloc-notes, vous devrez peut-être utiliser Édition > Coller dans le menu de votre coque.

    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. Remplacez les espaces réservésYOUR_REGION par laAWS région pour votre environnementYOUR_DAG_NAME, etYOUR_ENVIRONMENT_NAME. Par exemple, le nom d'hôte d'un réseau public peut ressembler à ceci (sans le https ://) :

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
  3. Vous devriez voir ce qui suit dans votre invite de commande :

    { "stderr":"<STDERR of the CLI execution (if any), base64 encoded>", "stdout":"<STDOUT of the CLI execution, base64 encoded>" }
Apache Airflow v1
  1. Copiez l'instruction cURL depuis votre fichier texte et collez-la dans votre interface de commande.

    Note

    Après l'avoir copié dans votre bloc-notes, vous devrez peut-être utiliser Édition > Coller dans le menu de votre coque.

    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. Remplacez les espaces réservésYOUR_REGION par laAWS région pour votre environnementYOUR_DAG_NAME, etYOUR_HOST_NAME. Par exemple, le nom d'hôte d'un réseau public peut ressembler à ceci (sans le https ://) :

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
  3. Vous devriez voir ce qui suit dans votre invite de commande :

    { "stderr":"<STDERR of the CLI execution (if any), base64 encoded>", "stdout":"<STDOUT of the CLI execution, base64 encoded>" }
  4. Remplacez les espaces réservés parYOUR_ENVIRONMENT_NAME etYOUR_DAG_NAME.

Utiliser un script bash

L'exemple suivant utilise un script bash pour appeler la create-cli-tokencommande dans leAWS CLI afin de créer un jeton CLI Apache Airflow.

Apache Airflow v2
  1. Copiez le contenu de l'exemple de code suivant et enregistrez-le sousget-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. Remplacez les espaces réservés en rouge parYOUR_ENVIRONMENT_NAMEYOUR_HOST_NAME, etYOUR_DAG_NAME. Par exemple, le nom d'hôte d'un réseau public peut ressembler à ceci (sans le https ://) :

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
  3. (facultatif) Les utilisateurs macOS et Linux peuvent avoir besoin d'exécuter la commande suivante pour s'assurer que le script est exécutable.

    chmod +x get-cli-token.sh
  4. Exécutez le script suivant pour créer un jeton CLI Apache Airflow.

    ./get-cli-token.sh
Apache Airflow v1
  1. Copiez le contenu de l'exemple de code suivant et enregistrez-le sousget-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. Remplacez les espaces réservés en rouge parYOUR_ENVIRONMENT_NAMEYOUR_HOST_NAME, etYOUR_DAG_NAME. Par exemple, le nom d'hôte d'un réseau public peut ressembler à ceci (sans le https ://) :

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
  3. (facultatif) Les utilisateurs macOS et Linux peuvent avoir besoin d'exécuter la commande suivante pour s'assurer que le script est exécutable.

    chmod +x get-cli-token.sh
  4. Exécutez le script suivant pour créer un jeton CLI Apache Airflow.

    ./get-cli-token.sh

Utiliser un script Python

L'exemple suivant utilise la méthode boto3 create_cli_token dans un script Python pour créer un jeton CLI Apache Airflow et déclencher un DAG. Vous pouvez exécuter ce script en dehors d'Amazon MWAA. Il ne vous reste qu'à installer la bibliothèque boto3. Vous souhaiterez peut-être créer un environnement virtuel pour installer la bibliothèque. Cela suppose que vous avez configuré les informations d'AWSauthentification pour votre compte.

Apache Airflow v2
  1. Copiez le contenu de l'exemple de code suivant et enregistrez-le souscreate-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. Remplacez les espaces réservés parYOUR_ENVIRONMENT_NAME etYOUR_DAG_NAME.

  3. Exécutez le script suivant pour créer un jeton CLI Apache Airflow.

    python3 create-cli-token.py
Apache Airflow v1
  1. Copiez le contenu de l'exemple de code suivant et enregistrez-le souscreate-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. Remplacez les espaces réservés parYOUR_ENVIRONMENT_NAME etYOUR_DAG_NAME.

  3. Exécutez le script suivant pour créer un jeton CLI Apache Airflow.

    python3 create-cli-token.py

Quelle est la prochaine étape ?

  • Découvrez l'opération d'API Amazon MWAA utilisée pour créer un jeton CLI à l'adresse CreateCliToken.