

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
<a name="call-mwaa-apis-cli"></a>

**dica**  
A API REST é mais moderna que a CLI e foi projetada para integração programática com sistemas externos. REST é a forma preferida de interagir com o 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, é possível obter um token e, em seguida, implantar DAGs de forma programática usando as APIs do Amazon MWAA. A seção a seguir inclui as etapas para criar um token da CLI do Apache Airflow usando a AWS CLI, um script cURL, um script Python ou um script bash. O token retornado na resposta é válido por 60 segundos.

O token AWS CLI é 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 solicitação de AWS CLI até que a anterior seja concluída com êxito.

**Contents**
+ [Pré-requisitos](#call-mwaa-apis-cli-prereqs)
  + [Acesso](#access-airflow-ui-prereqs-access)
  + [AWS CLI](#access-airflow-ui-prereqs-cli)
+ [Como usar o AWS CLI](#create-cli-token-cli)
+ [Como usar um script cURL](#create-cli-token-curl)
+ [Como usar um script bash](#create-cli-token-bash)
+ [Como usar um script Python](#create-cli-token-python)
+ [Próximas etapas](#mwaa-cli-next-up)

## Pré-requisitos
<a name="call-mwaa-apis-cli-prereqs"></a>

A seção a seguir descreve as etapas preliminares necessárias para usar os comandos e scripts desta página.

### Acesso
<a name="access-airflow-ui-prereqs-access"></a>
+ Acesso da Conta da AWS no AWS Identity and Access Management (IAM) à política de permissões do Amazon MWAA no [Política de acesso ao Apache Airflow UI: Amazon MWAAWeb ServerAccess](access-policies.md#web-ui-access).
+ Acesso da Conta da AWS no AWS Identity and Access Management (IAM) à política de permissões do Amazon MWAA [Política completa de acesso à API e ao console: Amazon MWAAFull ApiAccess](access-policies.md#full-access-policy).

### AWS CLI
<a name="access-airflow-ui-prereqs-cli"></a>

A AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que pode ser usada para interagir com os serviços da AWS por meio de comandos no shell da linha de comando. Para concluir as etapas nesta página, é necessário o seguinte:
+ [AWS CLI – instalar a versão 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).
+ [AWS CLI: configuração rápida com `aws configure`](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).

## Como usar o AWS CLI
<a name="create-cli-token-cli"></a>

O exemplo a seguir usa o comando [create-cli-token](https://docs.aws.amazon.com/cli/latest/reference/mwaa/create-cli-token.html) na AWS CLI para criar um token da CLI do Apache Airflow.

```
aws mwaa create-cli-token --name {{YOUR_ENVIRONMENT_NAME}}
```

## Como usar um script cURL
<a name="create-cli-token-curl"></a>

O exemplo a seguir usa um script curl para chamar o comando [create-web-login-token](https://docs.aws.amazon.com/cli/latest/reference/mwaa/create-cli-token.html) na AWS CLI para invocar a CLI do Apache Airflow por meio de um endpoint no servidor Web do Apache Airflow.

------
#### [ Apache Airflow v3 ]

1. Copie a instrução cURL do seu arquivo de texto e cole-a no shell de comando.
**nota**  
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 {{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
   ```

1. Substitua os espaços reservados em {{vermelho}} pela Região da AWS do seu ambiente, `{{YOUR_DAG_NAME}}` e `{{YOUR_ENVIRONMENT_NAME}}`. Por exemplo, um nome de host para uma rede pública pode ser algo como (sem o *https://)*:

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

   Seu prompt de comando exibe:

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

------
#### [ Apache Airflow v2 ]

1. Copie a instrução cURL do seu arquivo de texto e cole-a no shell de comando.
**nota**  
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 {{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
   ```

1. Substitua os espaços reservados em {{vermelho}} pela Região da AWS do seu ambiente, `YOUR_DAG_NAME` e `YOUR_ENVIRONMENT_NAME`. Por exemplo, um nome de host para uma rede pública pode ser algo como (sem o *https://)*:

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

   Seu prompt de comando exibe:

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

------

## Como usar um script bash
<a name="create-cli-token-bash"></a>

O exemplo a seguir usa um script bash para chamar o comando [create-cli-token](https://docs.aws.amazon.com/cli/latest/reference/mwaa/create-cli-token.html) na AWS CLI para criar um token da CLI do Apache Airflow.

------
#### [ Apache Airflow v3 ]

1. 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 -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")"
   ```

1. Substitua os espaços reservados em {{vermelho}} por `YOUR_ENVIRONMENT_NAME`, `YOUR_HOST_NAME` e `YOUR_DAG_NAME`. Por exemplo, um nome de host para uma rede pública pode ser algo como (sem o *https://)*:

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

1. (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
   ```

1. Execute o script a seguir para criar um token da CLI do Apache Airflow.

   ```
   ./get-cli-token.sh
   ```

------
#### [ Apache Airflow v2 ]

1. 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}}"
   ```

1. Substitua os espaços reservados em {{vermelho}} por `YOUR_ENVIRONMENT_NAME`, `YOUR_HOST_NAME` e `YOUR_DAG_NAME`. Por exemplo, um nome de host para uma rede pública pode ser algo como (sem o *https://)*:

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

1. (opcional) os usuários do macOS e do Linux podem executar o comando a seguir para garantir que o script seja executável.

   ```
   chmod +x get-cli-token.sh
   ```

1. Execute o script a seguir para criar um token da CLI do Apache Airflow.

   ```
   ./get-cli-token.sh
   ```

------

## Como usar um script Python
<a name="create-cli-token-python"></a>

O exemplo a seguir usa o método [boto3 create\_cli\_token](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/mwaa.html#MWAA.Client.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 autenticação da AWS](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#configuration) para sua conta.

------
#### [ Apache Airflow v3 ]

1. 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)
   ```

1. Substitua os espaços reservados por `YOUR_ENVIRONMENT_NAME` e `YOUR_DAG_NAME`.

1. Execute o script a seguir para criar um token da CLI do Apache Airflow.

   ```
   python3 create-cli-token.py
   ```

------
#### [ Apache Airflow v2 ]

1. 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)
   ```

1. Substitua os espaços reservados por `YOUR_ENVIRONMENT_NAME` e `YOUR_DAG_NAME`.

1. Execute o script a seguir para criar um token da CLI do Apache Airflow.

   ```
   python3 create-cli-token.py
   ```

------

## Próximas etapas
<a name="mwaa-cli-next-up"></a>
+ Explore a operação da API Amazon MWAA usada para criar um token da CLI em [CreateCliToken](https://docs.aws.amazon.com/mwaa/latest/API/API_CreateCliToken.html) (Criar token da CLI).