As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Como criar um token da CLI do Apache Airflow
É possível usar os comandos nesta página para gerar um token da CLI e, em seguida, fazer chamadas de API do Amazon Managed Workflows for Apache Airflow diretamente no seu shell de comando. Por exemplo, você pode obter um token e implantar DAGs programaticamente usando o Amazon MWAA. APIs A seção a seguir inclui as etapas para criar um token CLI do Apache Airflow usando o AWS CLI, um script curl, um script Python ou um script bash. O token retornado na resposta é válido por 60 segundos.
O AWS CLI token é destinado a substituir as ações síncronas do shell, não os comandos assíncronos da API. Dessa forma, a simultaneidade disponível é limitada. Para garantir que o servidor web permaneça responsivo para os usuários, é recomendável não abrir uma nova AWS CLI solicitação até que a anterior seja concluída com êxito.
Pré-requisitos
A seção a seguir descreve as etapas preliminares necessárias para usar os comandos e scripts desta página.
Acesso
AWS CLI
O AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que permite que você interaja com AWS serviços usando comandos em seu shell de linha de comando. Para concluir as etapas nesta página, é necessário o seguinte:
Usando o AWS CLI
O exemplo a seguir usa o create-cli-tokencomando no AWS CLI para criar um token CLI do Apache Airflow.
aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME
Como usar um script cURL
O exemplo a seguir usa um script curl para chamar o create-web-login-tokencomando no para AWS CLI invocar a CLI do Apache Airflow por meio de um endpoint no servidor web Apache Airflow.
- Apache Airflow v2
-
-
Copie a instrução cURL do seu arquivo de texto e cole-a no shell de comando.
Depois de copiá-la para a área de transferência, talvez seja necessário usar Editar > Colar a partir do seu menu 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
-
Substitua os espaços reservados pela AWS região de seu ambienteYOUR_DAG_NAME
, e. YOUR_REGION
YOUR_ENVIRONMENT_NAME
Por exemplo, um nome de host para uma rede pública pode ter a seguinte aparência (sem o https://):
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
-
Você deve ver o seguinte em seu prompt de comando:
{
"stderr":"<STDERR of the CLI execution (if any), base64 encoded>",
"stdout":"<STDOUT of the CLI execution, base64 encoded>"
}
- Apache Airflow v1
-
-
Copie a instrução cURL do seu arquivo de texto e cole-a no shell de comando.
Depois de copiá-la para a área de transferência, talvez seja necessário usar Editar > Colar a partir do seu menu 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
-
Substitua os espaços reservados pela AWS região de seu ambienteYOUR_DAG_NAME
, e. YOUR_REGION
YOUR_HOST_NAME
Por exemplo, um nome de host para uma rede pública pode ter a seguinte aparência (sem o https://):
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
-
Você deve ver o seguinte em seu prompt de comando:
{
"stderr":"<STDERR of the CLI execution (if any), base64 encoded>",
"stdout":"<STDOUT of the CLI execution, base64 encoded>"
}
-
Substitua os espaços reservados por YOUR_ENVIRONMENT_NAME
e YOUR_DAG_NAME
.
Como usar um script bash
O exemplo a seguir usa um script bash para chamar o create-cli-tokencomando no AWS CLI para criar um token CLI do Apache Airflow.
- Apache Airflow v2
-
-
Copie o conteúdo da amostra de código a seguir e salve localmente como 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 trigger YOUR_DAG_NAME
"
-
Substitua os espaços reservados red
por YOUR_ENVIRONMENT_NAME
YOUR_HOST_NAME
, e. YOUR_DAG_NAME
Por exemplo, um nome de host para uma rede pública pode ter a seguinte aparência (sem o https://):
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
-
(opcional) os usuários do macOS e do Linux podem precisar executar o comando a seguir para garantir que o script seja executável.
chmod +x get-cli-token.sh
-
Execute o script a seguir para criar um token da CLI do Apache Airflow.
./get-cli-token.sh
- Apache Airflow v1
-
-
Copie o conteúdo da amostra de código a seguir e salve localmente como 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 "trigger_dag YOUR_DAG_NAME
"
-
Substitua os espaços reservados red
por YOUR_ENVIRONMENT_NAME
YOUR_HOST_NAME
, e. YOUR_DAG_NAME
Por exemplo, um nome de host para uma rede pública pode ter a seguinte aparência (sem o https://):
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com
-
(opcional) os usuários do macOS e do Linux podem precisar executar o comando a seguir para garantir que o script seja executável.
chmod +x get-cli-token.sh
-
Execute o script a seguir para criar um token da CLI do Apache Airflow.
./get-cli-token.sh
Como usar um script Python
O exemplo a seguir usa o método boto3 create_cli_token em um script Python para criar um token da CLI do Apache Airflow e acionar um DAG. É possível executar esse script fora do Amazon MWAA. Você só precisa instalar a biblioteca boto3. Talvez você queira criar um ambiente virtual para instalar a biblioteca. Ele pressupõe que você tenha configurado as credenciais de AWS autenticação para sua conta.
- Apache Airflow v2
-
-
Copie o conteúdo da amostra de código a seguir e salve 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)
-
Substitua os espaços reservados por YOUR_ENVIRONMENT_NAME
e YOUR_DAG_NAME
.
-
Execute o script a seguir para criar um token da CLI do Apache Airflow.
python3 create-cli-token.py
- Apache Airflow v1
-
-
Copie o conteúdo da amostra de código a seguir e salve localmente como create-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)
-
Substitua os espaços reservados por YOUR_ENVIRONMENT_NAME
e YOUR_DAG_NAME
.
-
Execute o script a seguir para criar um token da CLI do Apache Airflow.
python3 create-cli-token.py
Próximas etapas