

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

**Suggerimento**  
L'API REST è più moderna della CLI ed è progettata per l'integrazione programmatica con sistemi esterni. REST è il modo preferito di interagire con Apache Airflow.

Puoi utilizzare i comandi in 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 e quindi distribuirlo a livello di DAGs codice utilizzando Amazon MWAA. APIs La sezione seguente include i passaggi per creare un token CLI Apache Airflow utilizzando AWS CLI uno script curl, uno script Python o uno script bash. Il token restituito nella risposta è valido per 60 secondi.

Il AWS CLI token è inteso come sostituto delle azioni della shell sincrone, non dei comandi API asincroni. Pertanto, la concorrenza disponibile è limitata. Per garantire che il server web rimanga reattivo per gli utenti, consigliamo di non aprire una nuova AWS CLI richiesta finché la precedente non viene completata correttamente.

**Contents**
+ [Prerequisiti](#call-mwaa-apis-cli-prereqs)
  + [Accesso](#access-airflow-ui-prereqs-access)
  + [AWS CLI](#access-airflow-ui-prereqs-cli)
+ [Usando il AWS CLI](#create-cli-token-cli)
+ [Utilizzo di uno script curl](#create-cli-token-curl)
+ [Usando uno script bash](#create-cli-token-bash)
+ [Usare uno script Python](#create-cli-token-python)
+ [Fasi successive](#mwaa-cli-next-up)

## Prerequisiti
<a name="call-mwaa-apis-cli-prereqs"></a>

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

### Accesso
<a name="access-airflow-ui-prereqs-access"></a>
+ Account AWS access in AWS Identity and Access Management (IAM) alla policy di autorizzazione di Amazon MWAA in. [Politica di accesso all'interfaccia utente di Apache Airflow: Amazon MWAAWeb ServerAccess](access-policies.md#web-ui-access)
+ Account AWS accesso AWS Identity and Access Management (IAM) alla policy di autorizzazione di Amazon MWAA. [Politica completa di accesso all'API e alla console: Amazon MWAAFull ApiAccess](access-policies.md#full-access-policy)

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

Il AWS Command Line Interface (AWS CLI) è uno strumento open source che puoi usare per interagire con i AWS servizi utilizzando i comandi nella shell della riga di comando. Per completare la procedura descritta in questa pagina, è necessario quanto segue:
+ [AWS CLI — Installa la versione 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).
+ [AWS CLI — Configurazione rapida con `aws configure`](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).

## Usando il AWS CLI
<a name="create-cli-token-cli"></a>

L'esempio seguente utilizza il [create-cli-token](https://docs.aws.amazon.com/cli/latest/reference/mwaa/create-cli-token.html)comando in AWS CLI per creare un token CLI Apache Airflow.

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

## Utilizzo di uno script curl
<a name="create-cli-token-curl"></a>

L'esempio seguente utilizza uno script curl per chiamare il [create-web-login-token](https://docs.aws.amazon.com/cli/latest/reference/mwaa/create-cli-token.html)comando in per AWS CLI richiamare l'Apache Airflow CLI tramite un endpoint sul server web Apache Airflow.

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

1. Copia l'istruzione curl dal tuo file di testo e incollala nella shell dei comandi.
**Nota**  
Dopo averla copiata negli appunti, potresti dover usare **Modifica > Incolla** dal menu della 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. Sostituisci i segnaposti con quelli {{red}} Regione AWS per il tuo ambiente, e. `{{YOUR_DAG_NAME}}` `{{YOUR_ENVIRONMENT_NAME}}` Ad esempio, un nome host per una rete pubblica è simile (senza *https:*//) a:

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

   Il prompt dei comandi visualizza:

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

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

1. Copia l'istruzione curl dal tuo file di testo e incollala nella shell dei comandi.
**Nota**  
Dopo averla copiata negli appunti, potresti dover usare **Modifica > Incolla** dal menu della 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. Sostituisci i segnaposti con quelli {{red}} Regione AWS per il tuo ambiente, e. `YOUR_DAG_NAME` `YOUR_ENVIRONMENT_NAME` Ad esempio, un nome host per una rete pubblica è simile (senza *https:*//) a:

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

   Il prompt dei comandi visualizza:

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

------

## Usando uno script bash
<a name="create-cli-token-bash"></a>

L'esempio seguente utilizza uno script bash per chiamare il [create-cli-token](https://docs.aws.amazon.com/cli/latest/reference/mwaa/create-cli-token.html)comando in per AWS CLI creare un token CLI Apache Airflow.

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

1. Copia il contenuto del seguente esempio di codice e salvalo localmente come. `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. Sostituite i segnaposto in {{red}}`YOUR_ENVIRONMENT_NAME`, `YOUR_HOST_NAME` e. `YOUR_DAG_NAME` Ad esempio, un nome host per una rete pubblica è simile (senza *https:*//):

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

1. (opzionale) Gli utenti macOS e Linux potrebbero dover eseguire il comando seguente per assicurarsi che lo script sia eseguibile.

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

1. Esegui lo script seguente per creare un token CLI Apache Airflow.

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

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

1. Copia il contenuto del seguente esempio di codice e salvalo localmente con nome. `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. Sostituite i segnaposto in {{red}}`YOUR_ENVIRONMENT_NAME`, `YOUR_HOST_NAME` e. `YOUR_DAG_NAME` Ad esempio, un nome host per una rete pubblica è simile (senza *https:*//):

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

1. (opzionale) Gli utenti macOS e Linux possono eseguire il seguente comando per assicurarsi che lo script sia eseguibile.

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

1. Esegui lo script seguente per creare un token CLI Apache Airflow.

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

------

## Usare uno script Python
<a name="create-cli-token-python"></a>

L'esempio seguente utilizza il metodo [boto3 create\_cli\_token in uno script Python per creare un token](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/mwaa.html#MWAA.Client.create_cli_token) CLI Apache Airflow e attivare un DAG. Puoi eseguire questo script al di fuori di Amazon MWAA. L'unica cosa che devi fare è installare la libreria boto3. Potresti voler creare un ambiente virtuale per installare la libreria. Si presuppone che tu abbia [configurato le credenziali di AWS autenticazione](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#configuration) per il tuo account.

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

1. Copia il contenuto del seguente esempio di codice e salvalo localmente con nome. `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. Sostituite i segnaposti con e. `YOUR_ENVIRONMENT_NAME` `YOUR_DAG_NAME`

1. Esegui lo script seguente per creare un token CLI Apache Airflow.

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

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

1. Copia il contenuto del seguente esempio di codice e salvalo localmente con nome. `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. Sostituite i segnaposti con e. `YOUR_ENVIRONMENT_NAME` `YOUR_DAG_NAME`

1. Esegui lo script seguente per creare un token CLI Apache Airflow.

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

------

## Fasi successive
<a name="mwaa-cli-next-up"></a>
+ Esplora l'operazione dell'API Amazon MWAA utilizzata per creare un token CLI su. [CreateCliToken](https://docs.aws.amazon.com/mwaa/latest/API/API_CreateCliToken.html)