

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Configuration d'une connexion Apache Airflow à l'aide d'un secret AWS Secrets Manager
<a name="connections-secrets-manager"></a>

AWS Secrets Manager est un backend Apache Airflow alternatif pris en charge sur un environnement Amazon Managed Workflows pour Apache Airflow. Cette rubrique explique comment stocker en toute sécurité AWS Secrets Manager les secrets des variables Apache Airflow et d'une connexion Apache Airflow sur Amazon Managed Workflows pour Apache Airflow.

**Note**  
Les secrets que vous créez vous sont facturés. Pour plus d'informations sur les tarifs de Secrets Manager, reportez-vous à la section [AWS Tarification](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) est également pris en charge en tant que backend de secrets dans Amazon MWAA. Pour plus d'informations, consultez la [documentation Amazon Provider Package](https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/secrets-backends/aws-ssm-parameter-store.html).

**Contents**
+ [

## Étape 1 : donnez à Amazon MWAA l'autorisation d'accéder aux clés secrètes de Secrets Manager
](#connections-sm-policy)
+ [

## Deuxième étape : créer le backend Secrets Manager en tant qu'option de configuration d'Apache Airflow
](#connections-sm-aa-configuration)
+ [

## Troisième étape : générer une chaîne d'URI de AWS connexion Apache Airflow
](#connections-sm-aa-uri)
+ [

## Étape 4 : ajouter les variables dans Secrets Manager
](#connections-sm-createsecret-variables)
+ [

## Étape 5 : ajouter la connexion dans Secrets Manager
](#connections-sm-createsecret-connection)
+ [

## Exemple de code
](#connections-sm-samples)
+ [

## Ressources
](#connections-sm-blogs)
+ [

## Quelle est la prochaine étape ?
](#connections-sm-next-up)

## Étape 1 : donnez à Amazon MWAA l'autorisation d'accéder aux clés secrètes de Secrets Manager
<a name="connections-sm-policy"></a>

Le [rôle d'exécution](mwaa-create-role.md) de votre environnement Amazon MWAA nécessite un accès en AWS Secrets Manager lecture à la clé secrète. La politique IAM suivante autorise l'accès en lecture-écriture à l'aide de la AWS stratégie -managed. [SecretsManagerReadWrite](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/SecretsManagerReadWrite$jsonEditor)

**Pour associer la politique à votre rôle d'exécution**

1. Ouvrez la page [Environnements](https://console.aws.amazon.com/mwaa/home#/environments) sur la console Amazon MWAA.

1. Choisissez un environnement.

1. Choisissez votre rôle d'exécution dans le volet **Autorisations**.

1. Choisissez **Attacher des politiques**.

1. Tapez `SecretsManagerReadWrite` dans le champ de texte **Politiques de filtrage**.

1. Choisissez **Attach policy** (Attacher la politique).

Si vous ne souhaitez pas utiliser de politique d'autorisation AWS gérée, vous pouvez directement mettre à jour le rôle d'exécution de votre environnement pour autoriser n'importe quel niveau d'accès à vos ressources de Secrets Manager. Par exemple, la déclaration de politique suivante accorde un accès en lecture à tous les secrets que vous créez dans un espace spécifique Région AWS dans 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": "*"
        }
    ]
}
```

------

## Deuxième étape : créer le backend Secrets Manager en tant qu'option de configuration d'Apache Airflow
<a name="connections-sm-aa-configuration"></a>

La section suivante décrit comment créer une option de configuration Apache Airflow sur la console Amazon MWAA pour le backend. AWS Secrets Manager Si vous utilisez un paramètre de configuration du même nom dans`airflow.cfg`, la configuration que vous créez dans les étapes suivantes est prioritaire et remplace les paramètres de configuration.

1. Ouvrez la page [Environnements](https://console.aws.amazon.com/mwaa/home#/environments) sur la console Amazon MWAA.

1. Choisissez un environnement.

1. Choisissez **Modifier**.

1. Choisissez **Suivant**.

1. Choisissez **Ajouter une configuration personnalisée** dans le volet des **options de configuration d'Airflow**. Ajoutez les paires clé-valeur suivantes :

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

   1. **`secrets.backend_kwargs`**: **`{"connections_prefix" : "airflow/connections", "variables_prefix" : "airflow/variables"}`** Cela permet de configurer Apache Airflow pour rechercher des chaînes de connexion et des variables `airflow/connections/*` sur `airflow/variables/*` et des chemins.

      Vous pouvez utiliser un [modèle de recherche](https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/secrets-backends/aws-secrets-manager.html#optional-lookup) pour réduire le nombre d'appels d'API qu'Amazon MWAA envoie à Secrets Manager en votre nom. Si vous ne spécifiez aucun modèle de recherche, Apache Airflow recherche toutes les connexions et variables dans le backend configuré. En spécifiant un modèle, vous réduisez les chemins possibles recherchés par Apache Airflow. Cela réduit vos coûts lorsque vous utilisez Secrets Manager avec Amazon MWAA.

      Pour spécifier un modèle de recherche, spécifiez les `variables_lookup_pattern` paramètres `connections_lookup_pattern` et. Ces paramètres acceptent une RegEx chaîne en entrée. Par exemple, pour rechercher des secrets commençant par`test`, entrez ce qui suit pour `secrets.backend_kwargs` :

      ```
      {
        "connections_prefix": "airflow/connections",
        "connections_lookup_pattern": "^test",
        "variables_prefix" : "airflow/variables",
        "variables_lookup_pattern": "^test"
      }
      ```
**Note**  
Pour utiliser `connections_lookup_pattern` et`variables_lookup_pattern`, vous devez installer `apache-airflow-providers-amazon` la version 7.3.0 ou supérieure. Pour plus d'informations sur la mise à jour des packages des fournisseurs vers des versions plus récentes, reportez-vous à. [Fichier de contraintes](connections-packages.md#connections-packages-constraints)

1. Choisissez **Enregistrer**.

## Troisième étape : générer une chaîne d'URI de AWS connexion Apache Airflow
<a name="connections-sm-aa-uri"></a>

[Pour créer une chaîne de connexion, utilisez la touche « tab » de votre clavier pour mettre en retrait les paires clé-valeur dans l'objet Connection.](https://airflow.apache.org/docs/stable/howto/connection/index.html) Nous vous recommandons également de créer une variable pour l'`extra`objet dans votre session shell. La section suivante explique les étapes à suivre pour [générer une chaîne d'URI de connexion Apache Airflow](https://airflow.apache.org/docs/apache-airflow/stable/howto/connection.html#generating-a-connection-uri) pour un environnement Amazon MWAA à l'aide d'Apache Airflow ou d'un script Python.

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

La session shell suivante utilise votre CLI Airflow locale pour générer une chaîne de connexion. Si la CLI n'est pas installée, nous vous recommandons d'utiliser le script Python.

1. Ouvrez une session shell Python :

   ```
   python3
   ```

1. Entrez la commande suivante :

   ```
   >>> import json
   ```

1. Entrez la commande suivante :

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

1. Créez une variable pour l'`extra`objet dans votre session shell. Remplacez les valeurs d'échantillon *YOUR\$1EXECUTION\$1ROLE\$1ARN* par le rôle d'exécution ARN et la région par *us-east-1* (tel que`us-east-1`).

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

1. Créez l'objet de connexion. Remplacez la valeur d'échantillon `myconn` par le nom de la connexion Apache Airflow.

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

1. Utilisez la touche « tab » de votre clavier pour mettre en retrait chacune des paires clé-valeur suivantes dans votre objet de connexion. Remplacez les valeurs d'échantillon par*red*.

   1. Spécifiez le type de AWS connexion :

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

   1. Spécifiez l'option de base de données Apache Airflow :

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

   1. Spécifiez l'URL de l'interface utilisateur Apache Airflow sur Amazon MWAA :

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

   1. Spécifiez l'ID de clé d' AWS accès (nom d'utilisateur) pour vous connecter à Amazon MWAA :

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

   1. Spécifiez la clé d'accès AWS secrète (mot de passe) pour vous connecter à Amazon MWAA :

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

   1. Spécifiez la variable de session `extra` shell :

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

   1. Fermez l'objet de connexion.

      ```
      ... )
      ```

1. Imprimez la chaîne d'URI de connexion :

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

   Reportez-vous à la chaîne d'URI de connexion dans la réponse :

   ```
   '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 ]

Le script Python suivant ne nécessite pas la CLI Apache Airflow.

1. Copiez le contenu de l'exemple de code suivant et enregistrez-le localement sous`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. Remplacez les espaces réservés par. *red*

1. Exécutez le script suivant pour générer une chaîne de connexion.

   ```
   python3 mwaa_connection.py
   ```

------

## Étape 4 : ajouter les variables dans Secrets Manager
<a name="connections-sm-createsecret-variables"></a>

La section suivante décrit comment créer le secret d'une variable dans Secrets Manager.

**Pour créer le secret**

1. Ouvrez la [AWS Secrets Manager console](https://console.aws.amazon.com/secretsmanager/home#/environments).

1. Choisissez **Store a new secret** (Stocker un nouveau secret).

1. Choisissez **Autre type de secret**.

1. Dans le volet **Spécifier les key/value paires à stocker dans ce secret**, choisissez **Plaintext**.

1. Ajoutez la valeur de la variable en **texte brut** au format suivant.

   ```
   "YOUR_VARIABLE_VALUE"
   ```

   Par exemple, pour spécifier un entier :

   ```
   14
   ```

   Par exemple, pour spécifier une chaîne :

   ```
   "mystring"
   ```

1. Pour **Clé de chiffrement**, choisissez une option de AWS KMS clé dans la liste déroulante.

1. Entrez un nom dans le champ de texte pour le **nom du secret** au format suivant.

   ```
   airflow/variables/YOUR_VARIABLE_NAME
   ```

   Par exemple :

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

1. Choisissez **Suivant**.

1. Sur la page **Configurer le secret**, dans le volet **Nom et description du secret**, procédez comme suit.

   1. Dans **Nom du secret**, saisissez le nom de votre secret.

   1. (Facultatif) **Dans Description**, fournissez une description de votre secret.

   Choisissez **Suivant**.

1. Dans le champ **Configurer la rotation - facultatif**, laissez les options par défaut et choisissez **Next**.

1. Répétez ces étapes dans Secrets Manager pour toutes les variables supplémentaires que vous souhaitez ajouter.

1. Sur la page **Révision**, vérifiez votre secret, puis choisissez **Store**.

## Étape 5 : ajouter la connexion dans Secrets Manager
<a name="connections-sm-createsecret-connection"></a>

La section suivante décrit comment créer le secret pour l'URI de votre chaîne de connexion dans Secrets Manager.

**Pour créer le secret**

1. Ouvrez la [AWS Secrets Manager console](https://console.aws.amazon.com/secretsmanager/home#/environments).

1. Choisissez **Store a new secret** (Stocker un nouveau secret).

1. Choisissez **Autre type de secret**.

1. Dans le volet **Spécifier les key/value paires à stocker dans ce secret**, choisissez **Plaintext**.

1. Ajoutez la chaîne d'URI de connexion en **texte brut** au format suivant.

   ```
   YOUR_CONNECTION_URI_STRING
   ```

   Par exemple :

   ```
   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
   ```
**Avertissement**  
Apache Airflow analyse chacune des valeurs de la chaîne de connexion. Vous **ne devez pas** utiliser de guillemets simples ou doubles, sinon cela analyse la connexion comme une chaîne unique.

1. Pour **Clé de chiffrement**, choisissez une option de AWS KMS clé dans la liste déroulante.

1. Entrez un nom dans le champ de texte pour le **nom du secret** au format suivant.

   ```
   airflow/connections/YOUR_CONNECTION_NAME
   ```

   Par exemple :

   ```
   airflow/connections/myconn
   ```

1. Choisissez **Suivant**.

1. Sur la page **Configurer le secret**, dans le volet **Nom et description du secret**, procédez comme suit.

   1. Dans **Nom du secret**, saisissez le nom de votre secret.

   1. (Facultatif) **Dans Description**, fournissez une description de votre secret.

   Choisissez **Suivant**.

1. Dans le champ **Configurer la rotation - facultatif**, laissez les options par défaut et choisissez **Next**.

1. Répétez ces étapes dans Secrets Manager pour toutes les variables supplémentaires que vous souhaitez ajouter.

1. Sur la page **Révision**, vérifiez votre secret, puis choisissez **Store**.

## Exemple de code
<a name="connections-sm-samples"></a>
+ Découvrez comment utiliser la clé secrète pour la connexion Apache Airflow (`myconn`) sur cette page à l'aide de l'exemple de code disponible à l'adresse. [Utilisation d'une clé secrète AWS Secrets Manager pour une connexion Apache Airflow](samples-secrets-manager.md)
+ Découvrez comment utiliser la clé secrète de la variable Apache Airflow (`test-variable`) sur cette page à l'aide de l'exemple de code disponible à l'adresse. [Utilisation d'une clé secrète AWS Secrets Manager pour une variable Apache Airflow](samples-secrets-manager-var.md)

## Ressources
<a name="connections-sm-blogs"></a>
+ Pour plus d'informations sur la configuration des secrets de Secrets Manager à l'aide de la console et du AWS CLI, reportez-vous à la section [Créer un secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) dans le *Guide de AWS Secrets Manager l'utilisateur*.
+ Utilisez un script Python pour migrer un grand volume de variables et de connexions Apache Airflow vers Secrets Manager dans [Move your Apache Airflow connections](https://aws.amazon.com/blogs/opensource/move-apache-airflow-connections-variables-aws-secrets-manager/) and variables to. AWS Secrets Manager

## Quelle est la prochaine étape ?
<a name="connections-sm-next-up"></a>
+ Découvrez comment générer un jeton pour accéder à l'interface utilisateur d'Apache Airflow dans. [Accès à Apache Airflow](access-airflow-ui.md)