

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à.

# Configurazione di una connessione Apache Airflow utilizzando un segreto Gestione dei segreti AWS
<a name="connections-secrets-manager"></a>

Gestione dei segreti AWS è un backend Apache Airflow alternativo supportato in un ambiente Amazon Managed Workflows for Apache Airflow. Questo argomento spiega come archiviare in modo sicuro i segreti per le variabili Apache Airflow e una connessione Apache Airflow su Amazon Managed Workflows for Apache Airflow. Gestione dei segreti AWS 

**Nota**  
Ti vengono addebitati i segreti che crei. Per ulteriori informazioni sui prezzi di Secrets Manager, consulta la sezione [AWS Prezzi](https://aws.amazon.com/secrets-manager/pricing/).
[AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store) è supportato anche come backend segreto in Amazon MWAA. Per ulteriori informazioni, consulta la [documentazione di Amazon Provider Package](https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/secrets-backends/aws-ssm-parameter-store.html).

**Contents**
+ [Fase uno: fornire ad Amazon MWAA l'autorizzazione ad accedere alle chiavi segrete di Secrets Manager](#connections-sm-policy)
+ [Fase due: creare il backend Secrets Manager come opzione di configurazione Apache Airflow](#connections-sm-aa-configuration)
+ [Fase tre: generare una stringa URI di connessione Apache AWS Airflow](#connections-sm-aa-uri)
+ [Fase quattro: Aggiungere le variabili in Secrets Manager](#connections-sm-createsecret-variables)
+ [Fase cinque: aggiungere la connessione in Secrets Manager](#connections-sm-createsecret-connection)
+ [Codice di esempio](#connections-sm-samples)
+ [Resources](#connections-sm-blogs)
+ [Fasi successive](#connections-sm-next-up)

## Fase uno: fornire ad Amazon MWAA l'autorizzazione ad accedere alle chiavi segrete di Secrets Manager
<a name="connections-sm-policy"></a>

Il [ruolo di esecuzione](mwaa-create-role.md) per il tuo ambiente Amazon MWAA richiede l'accesso in lettura alla chiave segreta. Gestione dei segreti AWS La seguente policy IAM consente l'accesso in lettura/scrittura utilizzando la policy -managed. AWS[SecretsManagerReadWrite](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/SecretsManagerReadWrite$jsonEditor)

**Per allegare la policy al tuo ruolo di esecuzione**

1. Apri la pagina [Ambienti](https://console.aws.amazon.com/mwaa/home#/environments) sulla console Amazon MWAA.

1. Scegli un ambiente.

1. Scegli il tuo ruolo di esecuzione nel riquadro **Autorizzazioni**.

1. Scegli **Collega policy**.

1. Digita `SecretsManagerReadWrite` nel campo di testo delle **politiche di filtro**.

1. Scegli **Collega policy**.

Se non desideri utilizzare una politica di autorizzazione AWS gestita, puoi aggiornare direttamente il ruolo di esecuzione del tuo ambiente per consentire qualsiasi livello di accesso alle risorse di Secrets Manager. Ad esempio, la seguente dichiarazione politica concede l'accesso in lettura a tutti i segreti creati in uno specifico Regione AWS in Secrets Manager.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetResourcePolicy",
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret",
                "secretsmanager:ListSecretVersionIds"
            ],
            "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:*"
        },
        {
            "Effect": "Allow",
            "Action": "secretsmanager:ListSecrets",
            "Resource": "*"
        }
    ]
}
```

------

## Fase due: creare il backend Secrets Manager come opzione di configurazione Apache Airflow
<a name="connections-sm-aa-configuration"></a>

La sezione seguente descrive come creare un'opzione di configurazione Apache Airflow sulla console Amazon MWAA per il backend. Gestione dei segreti AWS Se utilizzi un'impostazione di configurazione con lo stesso nome in`airflow.cfg`, la configurazione creata nei passaggi seguenti ha la precedenza e sostituisce le impostazioni di configurazione.

1. Apri la pagina [Ambienti](https://console.aws.amazon.com/mwaa/home#/environments) sulla console Amazon MWAA.

1. Scegli un ambiente.

1. Scegli **Modifica**.

1. Scegli **Next (Successivo)**.

1. Scegli **Aggiungi configurazione personalizzata** nel riquadro delle **opzioni di configurazione Airflow**. Aggiungi le seguenti coppie chiave-valore:

   1. **`secrets.backend`**: **`airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend`**

   1. **`secrets.backend_kwargs`**: **`{"connections_prefix" : "airflow/connections", "variables_prefix" : "airflow/variables"}`** Questo configura Apache Airflow per la ricerca di stringhe e variabili di connessione in e percorsi. `airflow/connections/*` `airflow/variables/*`

      Puoi utilizzare un [modello di ricerca](https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/secrets-backends/aws-secrets-manager.html#optional-lookup) per ridurre il numero di chiamate API che Amazon MWAA effettua a Secrets Manager per tuo conto. Se non si specifica un modello di ricerca, Apache Airflow cerca tutte le connessioni e le variabili nel backend configurato. Specificando uno schema, si restringono i possibili percorsi di ricerca di Apache Airflow. Ciò consente di ridurre i costi quando si utilizza Secrets Manager con Amazon MWAA.

      Per specificare un modello di ricerca, specifica i parametri and. `connections_lookup_pattern` `variables_lookup_pattern` Questi parametri accettano una RegEx stringa come input. Ad esempio, per cercare segreti che iniziano con`test`, inserisci quanto segue per`secrets.backend_kwargs`:

      ```
      {
        "connections_prefix": "airflow/connections",
        "connections_lookup_pattern": "^test",
        "variables_prefix" : "airflow/variables",
        "variables_lookup_pattern": "^test"
      }
      ```
**Nota**  
Per utilizzare `connections_lookup_pattern` e`variables_lookup_pattern`, è necessario installare la `apache-airflow-providers-amazon` versione 7.3.0 o successiva. Per ulteriori informazioni sull'aggiornamento dei pacchetti del provider alle versioni più recenti, fare riferimento a. [File di vincoli](connections-packages.md#connections-packages-constraints)

1. Scegli **Save** (Salva).

## Fase tre: generare una stringa URI di connessione Apache AWS Airflow
<a name="connections-sm-aa-uri"></a>

[Per creare una stringa di connessione, utilizzate il tasto «tab» sulla tastiera per indentare le coppie chiave-valore nell'oggetto Connection.](https://airflow.apache.org/docs/stable/howto/connection/index.html) Consigliamo inoltre di creare una variabile per l'`extra`oggetto nella sessione di shell. La sezione seguente illustra i passaggi per [generare una stringa URI di connessione Apache Airflow per un](https://airflow.apache.org/docs/apache-airflow/stable/howto/connection.html#generating-a-connection-uri) ambiente Amazon MWAA utilizzando Apache Airflow o uno script Python.

------
#### [ Apache Airflow CLI ]

La seguente sessione di shell utilizza la CLI Airflow locale per generare una stringa di connessione. Se non hai installato la CLI, ti consigliamo di usare lo script Python.

1. Apri una sessione di shell Python:

   ```
   python3
   ```

1. Immetti il comando seguente:

   ```
   >>> import json
   ```

1. Immetti il comando seguente:

   ```
   >>> from airflow.models.connection import Connection
   ```

1. Crea una variabile nella tua sessione di shell per l'`extra`oggetto. Sostituisci i valori del campione *YOUR\$1EXECUTION\$1ROLE\$1ARN* con il ruolo di esecuzione ARN e la regione *us-east-1* in (ad esempio`us-east-1`).

   ```
   >>> extra=json.dumps({'role_arn': 'YOUR_EXECUTION_ROLE_ARN', 'region_name': 'us-east-1'})
   ```

1. Create l'oggetto di connessione. Sostituisci il valore del campione `myconn` con il nome della connessione Apache Airflow.

   ```
   >>> myconn = Connection(
   ```

1. Usa il tasto «tab» sulla tastiera per indentare ciascuna delle seguenti coppie chiave-valore nell'oggetto di connessione. Sostituisci i valori di esempio in. *red*

   1. Specificate il tipo di AWS connessione:

      ```
      ... conn_id='aws',
      ```

   1. Specificate l'opzione del database Apache Airflow:

      ```
      ... conn_type='mysql',
      ```

   1. Specificare l'URL dell'interfaccia utente di Apache Airflow su Amazon MWAA:

      ```
      ... host='288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com/home',
      ```

   1. Specificare l'ID della chiave di AWS accesso (nome utente) per accedere ad Amazon MWAA:

      ```
      ... login='YOUR_AWS_ACCESS_KEY_ID',
      ```

   1. Specificare la chiave di accesso AWS segreta (password) per accedere ad Amazon MWAA:

      ```
      ... password='YOUR_AWS_SECRET_ACCESS_KEY',
      ```

   1. Specificare la variabile di sessione della `extra` shell:

      ```
      ... extra=extra
      ```

   1. Chiudi l'oggetto di connessione.

      ```
      ... )
      ```

1. Stampa la stringa URI di connessione:

   ```
   >>> myconn.get_uri()
   ```

   Fate riferimento alla stringa URI di connessione nella risposta:

   ```
   'mysql://288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com%2Fhome?role_arn=arn%3Aaws%3Aiam%3A%3A001122332255%3Arole%2Fservice-role%2FAmazonMWAA-MyAirflowEnvironment-iAaaaA&region_name=us-east-1'
   ```

------
#### [ Python script ]

Il seguente script Python non richiede l'Apache Airflow CLI.

1. Copiate il contenuto del seguente esempio di codice e salvatelo localmente con nome. `mwaa_connection.py`

   ```
   import urllib.parse
   								
   								conn_type = 'YOUR_DB_OPTION'
   								host = 'YOUR_MWAA_AIRFLOW_UI_URL'
   								port = 'YOUR_PORT'
   								login = 'YOUR_AWS_ACCESS_KEY_ID'
   								password = 'YOUR_AWS_SECRET_ACCESS_KEY'
   								role_arn = urllib.parse.quote_plus('YOUR_EXECUTION_ROLE_ARN')
   								region_name = 'us-east-1'
   								
   								conn_string = '{0}://{1}:{2}@{3}:{4}?role_arn={5}&region_name={6}'.format(conn_type, login, password, host, port, role_arn, region_name)
   								print(conn_string)
   ```

1. Sostituisci i segnaposto in. *red*

1. Eseguite lo script seguente per generare una stringa di connessione.

   ```
   python3 mwaa_connection.py
   ```

------

## Fase quattro: Aggiungere le variabili in Secrets Manager
<a name="connections-sm-createsecret-variables"></a>

La sezione seguente descrive come creare il segreto per una variabile in Secrets Manager.

**Per creare il segreto**

1. Apri la [Gestione dei segreti AWS console](https://console.aws.amazon.com/secretsmanager/home#/environments).

1. Scegli **Archivia un nuovo segreto**.

1. Scegli **Altro tipo di segreto**.

1. Nel riquadro **Specificare le key/value coppie da archiviare in questo riquadro segreto**, scegli **Testo normale.**

1. Aggiungi il valore della variabile come **testo semplice nel seguente formato**.

   ```
   "YOUR_VARIABLE_VALUE"
   ```

   Ad esempio, per specificare un numero intero:

   ```
   14
   ```

   Ad esempio, per specificare una stringa:

   ```
   "mystring"
   ```

1. Per la **chiave di crittografia**, scegli un'opzione AWS KMS chiave dall'elenco a discesa.

1. Inserisci un nome nel campo di testo per **Nome segreto** nel seguente formato.

   ```
   airflow/variables/YOUR_VARIABLE_NAME
   ```

   Esempio:

   ```
   airflow/variables/test-variable
   ```

1. Scegli **Next (Successivo)**.

1. Nella pagina **Configura segreto**, nel riquadro **Nome e descrizione segreti**, procedi come segue.

   1. Per **Nome segreto**, fornisci un nome per il tuo segreto.

   1. (Facoltativo) Per **Descrizione**, fornisci una descrizione del tuo segreto.

   Scegli **Next (Successivo)**.

1. In **Configura rotazione (facoltativo)**, lascia le opzioni predefinite e scegli **Avanti**.

1. Ripeti questi passaggi in Secrets Manager per tutte le variabili aggiuntive che desideri aggiungere.

1. Nella pagina di **revisione**, controlla il tuo segreto, quindi scegli **Store**.

## Fase cinque: aggiungere la connessione in Secrets Manager
<a name="connections-sm-createsecret-connection"></a>

La sezione seguente descrive come creare il segreto per l'URI della stringa di connessione in Secrets Manager.

**Per creare il segreto**

1. Apri la [Gestione dei segreti AWS console](https://console.aws.amazon.com/secretsmanager/home#/environments).

1. Scegli **Archivia un nuovo segreto**.

1. Scegli **Altro tipo di segreto**.

1. Nel riquadro **Specificare le key/value coppie da archiviare in questo riquadro segreto**, scegli **Testo normale.**

1. Aggiungi la stringa URI di connessione come **testo semplice nel seguente formato**.

   ```
   YOUR_CONNECTION_URI_STRING
   ```

   Esempio:

   ```
   mysql://288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com%2Fhome?role_arn=arn%3Aaws%3Aiam%3A%3A001122332255%3Arole%2Fservice-role%2FAmazonMWAA-MyAirflowEnvironment-iAaaaA&region_name=us-east-1
   ```
**avvertimento**  
Apache Airflow analizza tutti i valori nella stringa di connessione. **Non** è necessario utilizzare virgolette singole o doppie, altrimenti analizza la connessione come una singola stringa.

1. Per **Chiave di crittografia**, scegli un'opzione AWS KMS chiave dall'elenco a discesa.

1. Inserisci un nome nel campo di testo per **Nome segreto** nel seguente formato.

   ```
   airflow/connections/YOUR_CONNECTION_NAME
   ```

   Esempio:

   ```
   airflow/connections/myconn
   ```

1. Scegli **Next (Successivo)**.

1. Nella pagina **Configura segreto**, nel riquadro **Nome e descrizione segreti**, procedi come segue.

   1. Per **Nome segreto**, fornisci un nome per il tuo segreto.

   1. (Facoltativo) Per **Descrizione**, fornisci una descrizione del tuo segreto.

   Scegli **Next (Successivo)**.

1. In **Configura rotazione (facoltativo)**, lascia le opzioni predefinite e scegli **Avanti**.

1. Ripeti questi passaggi in Secrets Manager per tutte le variabili aggiuntive che desideri aggiungere.

1. Nella pagina di **revisione**, controlla il tuo segreto, quindi scegli **Store**.

## Codice di esempio
<a name="connections-sm-samples"></a>
+ Scopri come utilizzare la chiave segreta per la connessione Apache Airflow `myconn` () in questa pagina utilizzando il codice di esempio all'indirizzo. [Utilizzo di una chiave segreta Gestione dei segreti AWS per una connessione Apache Airflow](samples-secrets-manager.md)
+ Scopri come utilizzare la chiave segreta per la variabile Apache Airflow `test-variable` () in questa pagina utilizzando il codice di esempio all'indirizzo. [Utilizzo di una chiave segreta Gestione dei segreti AWS per una variabile Apache Airflow](samples-secrets-manager-var.md)

## Resources
<a name="connections-sm-blogs"></a>
+ Per ulteriori informazioni sulla configurazione dei segreti di Secrets Manager utilizzando la console e il AWS CLI, consulta [Create a secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) nella *Guida per l'Gestione dei segreti AWS utente*.
+ Usa uno script Python per migrare un grande volume di variabili e connessioni Apache Airflow a Secrets Manager in Move [your Apache Airflow connections and variable](https://aws.amazon.com/blogs/opensource/move-apache-airflow-connections-variables-aws-secrets-manager/) to. Gestione dei segreti AWS

## Fasi successive
<a name="connections-sm-next-up"></a>
+ Scopri come generare un token per accedere all'interfaccia utente di Apache Airflow. [Accesso ad Apache Airflow](access-airflow-ui.md)