View a markdown version of this page

Creación de un token de la CLI de Apache Airflow - Amazon Managed Workflows para Apache Airflow

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Creación de un token de la CLI de Apache Airflow

sugerencia

La API REST es más moderna que la CLI y está diseñada para la integración programática con sistemas externos. REST es la forma preferida de interactuar con Apache Airflow.

Puede usar los comandos de esta página para generar un token de para la CLI y, a continuación, realizar llamadas a la API de Amazon Managed Workflows para Apache Airflow directamente en el shell de comandos. Por ejemplo, puede obtener un token y, a continuación, implementar los DAG mediante programación con las API de Amazon MWAA. La siguiente sección incluye los pasos para crear un token de CLI de Apache Airflow mediante un script curl, un script Python o un script bash. AWS CLI El token devuelto en la respuesta es válido durante 60 segundos.

El AWS CLI token está diseñado para reemplazar las acciones sincrónicas del shell, no los comandos asincrónicos de la API. Por lo tanto, la simultaneidad disponible es limitada. Para garantizar que el servidor web siga respondiendo a las necesidades de los usuarios, recomendamos no abrir una nueva AWS CLI solicitud hasta que la anterior se complete correctamente.

Requisitos previos

En la siguiente sección se describen los pasos preliminares necesarios para utilizar los comandos y scripts de esta página.

Acceso

AWS CLI

La AWS Command Line Interface (AWS CLI) es una herramienta de código abierto que puede usar para interactuar con los AWS servicios mediante los comandos de su shell de línea de comandos. Para completar los pasos de esta página, necesita lo siguiente:

Uso de AWS CLI

En el siguiente ejemplo, se usa el comando create-cli-token AWS CLI para crear un token de CLI de Apache Airflow.

aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME

Uso de un script de cURL

Utilice el siguiente script curl para llamar al comando create-cli-token para invocar la CLI de Apache Airflow AWS CLI a través de un punto final del servidor web Apache Airflow y activar un DAG.

Apache Airflow v3
  1. Copie la instrucción de cURL del archivo de texto y péguela en el shell de comandos.

    nota

    Tras copiarla en el portapapeles, puede que tenga que usar Edit > Paste (Editar > Pegar) en el menú del shell.

    CLI_JSON=$(aws mwaa --region us-east-1 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 -L --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 --logical-date $(date -u +"%Y-%m-%dT%H:%M:%SZ")") \ && echo "Output:" \ && echo $CLI_RESULTS | jq -r '.stdout' | base64 --decode \ && echo "Errors:" \ && echo $CLI_RESULTS | jq -r '.stderr' | base64 --decode
  2. YOUR_DAG_NAMESustitúyalo por el nombre de su DAG, YOUR_ENVIRONMENT_NAME por el nombre de su entorno y por la región de su entorno. Región de AWS Por ejemplo, el nombre de host de una red pública tiene este aspecto (sin el https://):

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com

    La línea de comandos muestra lo siguiente:

    { "stderr":"<STDERR of the CLI execution (if any), base64 encoded>", "stdout":"<STDOUT of the CLI execution, base64 encoded>" }
Apache Airflow v2
  1. Copie la instrucción de cURL del archivo de texto y péguela en el shell de comandos.

    nota

    Tras copiarla en el portapapeles, puede que tenga que usar Edit > Paste (Editar > Pegar) en el menú del shell.

    CLI_JSON=$(aws mwaa --region us-east-1 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. YOUR_DAG_NAMESustitúyalo por el nombre de su DAG, YOUR_ENVIRONMENT_NAME por el nombre de su entorno y por el Región de AWS de la región de su entorno. Por ejemplo, el nombre de host de una red pública tiene este aspecto (sin el https://):

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com

    La línea de comandos muestra lo siguiente:

    { "stderr":"<STDERR of the CLI execution (if any), base64 encoded>", "stdout":"<STDOUT of the CLI execution, base64 encoded>" }

Uso de un script de bash

Utilice el siguiente script de bash para llamar al comando create-cli-token en AWS CLI, crear un token de CLI de Apache Airflow y activar un DAG.

Apache Airflow v3
  1. Copie el contenido del código de ejemplo siguiente y guárdelo localmente como get-cli-token.sh.

    # brew install jq CLI_TOKEN=$(aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME | jq -r '.CliToken') \ && curl -L --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 --logical-date $(date -u +"%Y-%m-%dT%H:%M:%SZ")"
  2. YOUR_ENVIRONMENT_NAMESustitúyalo por el nombre de su entorno, por el YOUR_HOST_NAME nombre de host de su servidor web y por el nombre de su DAG. YOUR_DAG_NAME Por ejemplo, el nombre de host de una red pública tiene este aspecto (sin el https://):

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
  3. (Opcional) Es posible que los usuarios de macOS y Linux tengan que ejecutar el siguiente comando para verificar que el script sea ejecutable.

    chmod +x get-cli-token.sh
  4. Ejecute el script siguiente para crear un token de la CLI de Apache Airflow.

    ./get-cli-token.sh
Apache Airflow v2
  1. Copie el contenido del código de ejemplo siguiente y guárdelo localmente como get-cli-token.sh.

    # brew install jq CLI_TOKEN=$(aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME | 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. YOUR_ENVIRONMENT_NAMESustitúyalo por el nombre de su entorno, YOUR_HOST_NAME por el nombre de host de su servidor web y YOUR_DAG_NAME por el nombre de su DAG. Por ejemplo, el nombre de host de una red pública tiene este aspecto (sin el https://):

    123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
  3. (Opcional) Es posible que los usuarios de macOS y Linux tengan que ejecutar el siguiente comando para verificar que el script sea ejecutable.

    chmod +x get-cli-token.sh
  4. Ejecute el script siguiente para crear un token de la CLI de Apache Airflow.

    ./get-cli-token.sh

Uso de un script de Python

El siguiente ejemplo utiliza el método boto3 create_cli_token en un script de Python para crear un token de la CLI de Apache Airflow y activar un DAG. Puede ejecutar este script fuera de Amazon MWAA. Para ello, solo tiene que instalar la biblioteca boto3. Es posible que deba crear un entorno virtual para instalar la biblioteca. Se supone que ha configurado las credenciales de AWS autenticación para su cuenta.

Apache Airflow v3
  1. Copie el contenido del código de ejemplo siguiente y guárdelo localmente como 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)
  2. Sustituya los marcadores de posición por YOUR_ENVIRONMENT_NAME y YOUR_DAG_NAME.

  3. Ejecute el script siguiente para crear un token de la CLI de Apache Airflow.

    python3 create-cli-token.py
Apache Airflow v2
  1. Copie el contenido del código de ejemplo siguiente y guárdelo localmente como 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)
  2. Sustituya los marcadores de posición por YOUR_ENVIRONMENT_NAME y YOUR_DAG_NAME.

  3. Ejecute el script siguiente para crear un token de la CLI de Apache Airflow.

    python3 create-cli-token.py

Siguientes pasos

  • Explore la operación de la API de Amazon MWAA utilizada para crear un token de CLI en. CreateCliToken