

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.

# Gestion d’un RDS Proxy
<a name="rds-proxy-managing"></a>

 Cette section fournit des informations sur la gestion du fonctionnement et de la configuration de RDS Proxy. Ces procédures aident votre application à utiliser de manière optimale les connexions de base de données et à obtenir une réutilisation maximale des connexions. Plus vous tirez profit de la réutilisation des connexions, plus vous évitez une surcharge de l’UC et de la mémoire. Cela réduit la latence de votre application et permet à la base de données de dédier une plus grande partie de ses ressources au traitement des requêtes d’application. 

**Topics**
+ [Modification d’un RDS Proxy](rds-proxy-modifying-proxy.md)
+ [Ajout d’un nouvel utilisateur de base de données lors de l’utilisation du proxy RDS](rds-proxy-new-db-user.md)
+ [Passage de l'authentification IAM standard à l'authentification end-to-end IAM pour le proxy RDS](rds-proxy-iam-migration.md)
+ [Considérations relatives à la connexion RDS Proxy](rds-proxy-connections.md)
+ [Contournement de l’épinglage d’un proxy RDS](rds-proxy-pinning.md)
+ [Suppression d'un RDS Proxy](rds-proxy-deleting.md)

# Modification d’un RDS Proxy
<a name="rds-proxy-modifying-proxy"></a>

 Vous pouvez modifier des paramètres spécifiques associés à un proxy après sa création. Pour ce faire, modifiez le proxy lui-même, son groupe cible associé, ou les deux. Chaque proxy dispose d’un groupe cible associé. 

## AWS Management Console
<a name="rds-proxy-modifying-proxy.console"></a>

**Important**  
Les valeurs des champs **Client authentication type** (Type d’authentification client) et **IAM authentication** (Authentification IAM) s’appliquent à tous les secrets de Secrets Manager associés à ce proxy. Pour spécifier des valeurs différentes pour chaque secret, modifiez votre proxy en utilisant plutôt l'API AWS CLI ou l'API.

**Modifications des paramètres d’un proxy**

1. Connectez-vous à la console Amazon RDS AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)l'adresse.

1.  Dans le panneau de navigation, sélectionnez **Proxies**. 

1.  Dans la liste de proxy, choisissez celui dont vous souhaitez modifier les paramètres ou accédez à sa page de détails. 

1.  Pour **Actions**, choisissez **Modifier**. 

1.  Saisissez ou sélectionnez les propriétés à modifier. Vous pouvez modifier les valeurs suivantes : 
   +  **Identifiant du proxy** : renommez le proxy en saisissant un nouvel identifiant. 
   +  **Délai d’inactivité de la connexion client** – Saisissez une période pour le délai d’inactivité de la connexion client. 
   +  **Rôle IAM** – Modifiez le rôle IAM utilisé pour récupérer les secrets de Secrets Manager. 
**Note**  
Vous ne pouvez pas créer de nouveau rôle IAM si vous définissez le **schéma d'authentification par défaut** sur Authentification **IAM**.
   +  **Secrets de Secrets Manager** – Ajoutez ou supprimez des secrets Secrets Manager. Ces secrets correspondent aux noms d’utilisateur et mots de passe de la base de données. 
   +  **Type d'authentification client** : modifiez le type d'authentification pour les connexions client au proxy. 
   +  **IAM authentication** (Authentification IAM) : exigez ou désactivez l’authentification IAM pour les connexions au proxy. 
   +  **Schéma d'authentification par** défaut : modifiez le schéma d'authentification par défaut utilisé par le proxy pour les connexions client au proxy et les connexions entre le proxy et la base de données sous-jacente. 
   +  **Exiger la Sécurité de la couche transport** – Activez ou désactivez l’exigence du protocole TLS (Transport Layer Security). 
   +  **Groupe de sécurité de VPC** – Ajoutez ou supprimez des groupes de sécurité de VPC que le proxy doit utiliser. 
   +  **Activation de la journalisation améliorée** – Activez ou désactivez la journalisation améliorée. 

1.  Sélectionnez **Modify**. 

Si vous n’avez pas trouvé les paramètres répertoriés que vous souhaitez modifier, procédez comme suit pour mettre à jour le groupe cible du proxy. Le *groupe cible* associé à un proxy contrôle les paramètres liés aux connexions à la base de données physique. Chaque proxy dispose d’un groupe cible associé, nommé `default`, qui est créé automatiquement avec le proxy. Vous ne pouvez pas renommer le groupe cible par défaut.

 Vous pouvez uniquement modifier le groupe cible à partir de la page de détails du proxy, et non depuis la liste de la page **Proxies**. 

**Modification des paramètres d’un groupe cible proxy**

1.  À partir de la page **Proxies**, accédez à la page des détails d’un proxy. 

1.  Pour les **Groupes cibles**, choisissez le lien `default`. Actuellement, tous les proxy ont un groupe cible unique nommé `default`. 

1.  Sur la page de détails du groupe cible **par défaut**, sélectionnez **Modifier**. 

1.  Définissez de nouveaux paramètres pour les propriétés que vous pouvez modifier : 
   +  **Base de données** : choisissez une autre instance ou un autre cluster de base de données RDS. 
   +  **Nombre maximal de connexions dans le groupe de connexions** – Ajustez le pourcentage du nombre de connexions maximum disponibles que le proxy peut utiliser. 
   +  **Filtre d’épinglage de session** – (Facultatif) Choisissez un filtre d’épinglage de session. Cela permet de contourner les mesures de sécurité par défaut pour le multiplexage des connexions de base de données entre les connexions client. Actuellement, le paramètre n’est pas pris en charge pour PostgreSQL. Le seul choix est `EXCLUDE_VARIABLE_SETS`. 

     Avec l’activation de ce paramètre, les variables de session d’une connexion peuvent avoir un impact sur d’autres connexions. Cela peut entraîner des erreurs ou des problèmes d’exactitude si vos requêtes dépendent de valeurs de variables de session définies en dehors de la transaction en cours. Vous pouvez utiliser cette option après avoir vérifié que vos applications peuvent partager des connexions de base de données en toute sécurité entre les connexions client.

     Les modèles suivants peuvent être considérés comme sûrs :
     + Instructions `SET` dans lesquelles aucune modification n’est apportée à la valeur effective de la variable de session, c’est-à-dire qu’aucune modification n’est apportée à la variable de session.
     + Vous modifiez la valeur de la variable de session et exécutez une instruction dans la même transaction.

     Pour plus d’informations, consultez [Contournement de l’épinglage d’un proxy RDS](rds-proxy-pinning.md). 
   +  **Délai d’expiration d’emprunt de connexion** – Ajustez l’intervalle du délai d’attente d’emprunt de connexion. Ce paramètre s’applique lorsque le nombre maximal de connexions est déjà utilisé pour le proxy. Ce paramètre permet de définir combien de temps le proxy doit attendre la disponibilité d’une connexion avant de renvoyer une erreur de dépassement de délai d’attente. 
   + **Requête d’initialisation**. (Facultatif) Ajoutez une requête d’initialisation ou modifiez la requête actuelle. Vous pouvez spécifier une ou plusieurs instructions SQL que le proxy doit exécuter lors de l’ouverture de chaque nouvelle connexion à la base de données. Ce paramètre est généralement utilisé avec des instructions `SET` pour s’assurer que chaque connexion a des paramètres identiques. Assurez-vous que la requête que vous ajoutez est valide. Pour inclure plusieurs variables dans une seule instruction `SET`, utilisez des virgules comme séparateurs. Par exemple :

     ```
     SET variable1=value1, variable2=value2
     ```

     Pour plusieurs instructions, utilisez des points-virgules comme séparateur.

    Certaines propriétés, telles que l’identifiant du groupe cible et le moteur de base de données, sont corrigées. 

1.  Sélectionnez **Modification du groupe cible**. 

## AWS CLI
<a name="rds-proxy-modifying-proxy.cli"></a>

 Pour modifier un proxy à l'aide de AWS CLI, utilisez les commandes [modify-db-proxymodify-db-proxy-target](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy.html)[-group [deregister-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/deregister-db-proxy-targets.html)](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-target-group.html)et [register-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/register-db-proxy-targets.html). 

 Avec la commande `modify-db-proxy`, vous pouvez modifier des propriétés, par exemple : 
+  Ensemble des secrets Secrets Manager utilisés par le proxy. 
+  TLS requis ou non. 
+  Délai d’expiration de la connexion client inactive. 
+  Nécessité ou non de consigner des informations supplémentaires des instructions SQL pour le débogage. 
+  Rôle IAM utilisé pour récupérer les secrets Secrets Manager. 
+  Groupes de sécurité utilisés par le proxy. 
+ Schéma d'authentification par défaut associé au proxy.

 L’exemple suivant montre comment renommer un proxy existant. 

```
aws rds modify-db-proxy --db-proxy-name the-proxy --new-db-proxy-name the_new_name
```

Pour modifier les paramètres liés à la connexion ou renommer le groupe cible, utilisez la commande `modify-db-proxy-target-group`. Actuellement, tous les proxy ont un groupe cible unique nommé `default`. Lorsque vous travaillez avec ce groupe cible, vous indiquez le nom du proxy et `default` pour le nom du groupe cible. Vous ne pouvez pas renommer le groupe cible par défaut.

 L’exemple suivant montre comment vérifier le paramètre `MaxIdleConnectionsPercent` d’un proxy, puis le modifier à l’aide du groupe cible. 

```
aws rds describe-db-proxy-target-groups --db-proxy-name the-proxy

{
    "TargetGroups": [
        {
            "Status": "available",
            "UpdatedDate": "2019-11-30T16:49:30.342Z",
            "ConnectionPoolConfig": {
                "MaxIdleConnectionsPercent": 50,
                "ConnectionBorrowTimeout": 120,
                "MaxConnectionsPercent": 100,
                "SessionPinningFilters": []
            },
            "TargetGroupName": "default",
            "CreatedDate": "2019-11-30T16:49:27.940Z",
            "DBProxyName": "the-proxy",
            "IsDefault": true
        }
    ]
}

aws rds modify-db-proxy-target-group --db-proxy-name the-proxy --target-group-name default --connection-pool-config '
{ "MaxIdleConnectionsPercent": 75 }'

{
    "DBProxyTargetGroup": {
        "Status": "available",
        "UpdatedDate": "2019-12-02T04:09:50.420Z",
        "ConnectionPoolConfig": {
            "MaxIdleConnectionsPercent": 75,
            "ConnectionBorrowTimeout": 120,
            "MaxConnectionsPercent": 100,
            "SessionPinningFilters": []
        },
        "TargetGroupName": "default",
        "CreatedDate": "2019-11-30T16:49:27.940Z",
        "DBProxyName": "the-proxy",
        "IsDefault": true
    }
}
```

 Grâce aux commandes `deregister-db-proxy-targets` et `register-db-proxy-targets`, vous modifiez les instances de base de données RDS auxquelles le proxy est associé via son groupe cible. Actuellement, chaque proxy peut se connecter à une instance de base de données RDS. Le groupe cible suit les détails de connexion de toutes les instances de base de données RDS dans une configuration multi-AZ.

 L’exemple suivant commence par un proxy associé à un cluster Aurora MySQL nommé `cluster-56-2020-02-25-1399`. L’exemple vous explique comment modifier le proxy afin qu’il puisse se connecter à un autre cluster nommé `provisioned-cluster`. 

 Lorsque vous travaillez avec une instance de base de données RDS, sélectionnez l’option `--db-instance-identifier`. 

 L’exemple suivant modifie un proxy Aurora MySQL. Un proxy PostgreSQL Aurora dispose du port 5432. 

```
aws rds describe-db-proxy-targets --db-proxy-name the-proxy

{
    "Targets": [
        {
            "Endpoint": "instance-9814.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "instance-9814"
        },
        {
            "Endpoint": "instance-8898.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "instance-8898"
        },
        {
            "Endpoint": "instance-1018.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "instance-1018"
        },
        {
            "Type": "TRACKED_CLUSTER",
            "Port": 0,
            "RdsResourceId": "cluster-56-2020-02-25-1399"
        },
        {
            "Endpoint": "instance-4330.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "instance-4330"
        }
    ]
}

aws rds deregister-db-proxy-targets --db-proxy-name the-proxy --db-cluster-identifier cluster-56-2020-02-25-1399

aws rds describe-db-proxy-targets --db-proxy-name the-proxy

{
    "Targets": []
}

aws rds register-db-proxy-targets --db-proxy-name the-proxy --db-cluster-identifier provisioned-cluster

{
    "DBProxyTargets": [
        {
            "Type": "TRACKED_CLUSTER",
            "Port": 0,
            "RdsResourceId": "provisioned-cluster"
        },
        {
            "Endpoint": "gkldje.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "gkldje"
        },
        {
            "Endpoint": "provisioned-1.demo.us-east-1.rds.amazonaws.com",
            "Type": "RDS_INSTANCE",
            "Port": 3306,
            "RdsResourceId": "provisioned-1"
        }
    ]
}
```

## API RDS
<a name="rds-proxy-modifying-proxy.api"></a>

 Pour modifier un proxy à l'aide de l'API RDS, vous devez utiliser les opérations [ModifierDBProxy, Modifier DBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxy.html) [TargetGroup, Désenregistrer DBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyTargetGroup.html) [les cibles](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeregisterDBProxyTargets.html) et [Enregistrer DBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RegisterDBProxyTargets.html) les cibles. 

 Avec `ModifyDBProxy`, vous pouvez modifier des propriétés, par exemple : 
+  Ensemble des secrets Secrets Manager utilisés par le proxy. 
+  TLS requis ou non. 
+  Délai d’expiration de la connexion client inactive. 
+  Nécessité ou non de consigner des informations supplémentaires des instructions SQL pour le débogage. 
+  Rôle IAM utilisé pour récupérer les secrets Secrets Manager. 
+  Groupes de sécurité utilisés par le proxy. 

Avec `ModifyDBProxyTargetGroup`, vous pouvez modifier les paramètres liés à la connexion. Actuellement, tous les proxy ont un groupe cible unique nommé `default`. Lorsque vous travaillez avec ce groupe cible, vous indiquez le nom du proxy et `default` pour le nom du groupe cible. Vous ne pouvez pas renommer le groupe cible par défaut.

 Avec `DeregisterDBProxyTargets` et `RegisterDBProxyTargets`, vous pouvez modifier l’instance de base de données RDS à laquelle/auquel le proxy est associé via son groupe cible. Actuellement, chaque proxy peut se connecter à une instance de base de données RDS . Le groupe cible suit les détails de connexion des instances de base de données RDS dans une configuration multi-AZ . 

# Ajout d’un nouvel utilisateur de base de données lors de l’utilisation du proxy RDS
<a name="rds-proxy-new-db-user"></a>

Dans certains cas, vous pouvez ajouter un nouvel utilisateur de base de données à une instance ou un cluster de bases de données RDS qui est associé à un proxy. Procédez selon que vous utilisez l'authentification standard avec les secrets de Secrets Manager ou l'authentification end-to-end IAM.

Si vous utilisez l'authentification IAM standard, suivez ces instructions :

1. Créez un nouveau secret Secrets Manager en suivant les instructions décrites dans la section [Configuration des informations d'identification de base de données pour le proxy RDS](rds-proxy-secrets-arns.md). 

1. Mettez à jour le rôle IAM pour permettre au proxy RDS d’accéder au nouveau secret Secrets Manager. Pour ce faire, mettez à jour la section des ressources de la politique de rôle IAM. 

1. Modifiez le proxy RDS pour ajouter le nouveau secret de Secrets Manager sous **Secrets de Secrets Manager**.

1.  Si le nouvel utilisateur remplace un utilisateur existant, mettez à jour les informations d’identification stockées dans le secret Secrets Manager du proxy pour l’utilisateur existant. 

Si vous utilisez l'authentification end-to-end IAM, vous devez créer l'utilisateur de base de données et configurer les autorisations IAM. Pour ce faire, suivez les étapes suivantes.

1. Créez un nouvel utilisateur de base de données dans votre base de données qui correspond au nom d'utilisateur ou de rôle IAM que vous souhaitez utiliser pour l'authentification.

1. Assurez-vous que l'utilisateur de la base de données est configuré avec le plug-in d'authentification IAM dans la base de données. Consultez [Création d’un compte de base de données à l’aide de l’authentification IAM](UsingWithRDS.IAMDBAuth.DBAccounts.md).

1. Mettez à jour la politique IAM pour accorder l'`rds-db:connect`autorisation à l'utilisateur ou au rôle IAM, comme décrit dans. [Création d'une politique IAM pour l'authentification end-to-end IAM](rds-proxy-iam-setup.md#rds-proxy-iam-setup-e2e-steps)

1. Assurez-vous que votre proxy est configuré pour utiliser l'authentification IAM comme schéma d'authentification par défaut.

Avec l'authentification end-to-end IAM, vous n'avez pas besoin de gérer les informations d'identification de la base de données dans les secrets de Secrets Manager, car les informations d'identification IAM sont utilisées pour l'authentification du client vers le proxy et du proxy vers la base de données. 

## Ajout d’un nouvel utilisateur de base de données à une base de données PostgreSQL lors de l’utilisation du proxy RDS
<a name="rds-proxy-new-db-user-pg"></a>

Lorsque vous ajoutez un nouvel utilisateur à votre base de données PostgreSQL, si vous avez exécuté la commande suivante :

```
REVOKE CONNECT ON DATABASE postgres FROM PUBLIC;
```

Accordez à l’utilisateur `rdsproxyadmin` le privilège `CONNECT` afin qu’il puisse surveiller les connexions sur la base de données cible. 

```
GRANT CONNECT ON DATABASE postgres TO rdsproxyadmin;
```

Vous pouvez également autoriser d’autres utilisateurs de la base de données cible à effectuer des surveillances de l’état en modifiant `rdsproxyadmin` pour l’utilisateur de la base de données dans la commande ci-dessus.

## Modification du mot de passe d’un utilisateur de base de données lors de l’utilisation du proxy RDS
<a name="rds-proxy-changing-db-user-password"></a>

Dans certains cas, vous pouvez modifier le mot de passe d’un utilisateur de base de données d’une instance de base de données RDS associée à un proxy. Le cas échéant, mettez à jour le secret Secrets Manager correspondant avec le nouveau mot de passe.

Si vous utilisez l'authentification end-to-end IAM, vous n'avez pas besoin de mettre à jour les mots de passe dans les secrets de Secrets Manager.

# Passage de l'authentification IAM standard à l'authentification end-to-end IAM pour le proxy RDS
<a name="rds-proxy-iam-migration"></a>

 Si vous utilisez actuellement l'authentification IAM standard pour le proxy RDS, dans laquelle les clients s'authentifient auprès du proxy via IAM mais le proxy se connecte à la base de données à l'aide de secrets, vous pouvez passer à l'authentification IAM dans laquelle les connexions client-to-proxy et proxy-to-database les connexions utilisent l'authentification end-to-end IAM. 

**Pour passer à l' end-to-endauthentification IAM**

1. **Mettre à jour les autorisations du rôle IAM du proxy RDS**

   Créez une politique d'autorisation de proxy mise à jour qui inclut à la fois Secrets Manager et `rds:db-connect` les autorisations :

   ```
   # Create updated proxy permission policy
   cat > updated-proxy-policy.json ≪ EOF
   ```

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "GetSecretsValue",
         "Action": [
           "secretsmanager:GetSecretValue"
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName-1234f"
         ]
       },
       {
         "Sid": "RdsDBConnect",
         "Action": [
           "rds-db:connect"
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:rds-db:us-east-1:123456789012:dbuser:cluster-ABCDEFGHIJKL01234/jane_doe"
         ]
       }
     ]
   }
   ```

   Mettez à jour votre politique de rôle en tant que proxy :

   ```
   aws iam put-role-policy \
               --role-name RDSProxyRole \
               --policy-name UpdatedProxyPermissions \
               --policy-document file://updated-proxy-policy.json
   ```

1. Modifiez votre proxy RDS pour activer l'authentification end-to-end IAM

   ```
   aws rds modify-db-proxy \
     --db-proxy-name my-database-proxy \
     --default-auth-scheme IAM_AUTH \
     --region us-east-1
   ```

   Vérifiez que l'état du proxy RDS est **disponible** et qu'il l'`DefaultAuthScheme`est `IAM_AUTH` avant de poursuivre afin de garantir l'absence de temps d'arrêt pendant la migration.

   ```
   aws rds describe-db-proxies --db-proxy-name my-database-proxy --region us-east-1
   ```

   Sortie attendue :

   ```
   {
     "DBProxies": [
       {
         "DBProxyName": "my-database-proxy",
         "DBProxyArn": "arn:aws:rds:us-east-1:123456789012:db-proxy:prx-0123456789abcdef",
         "Status": "available",
         ...
         "DefaultAuthScheme": "IAM_AUTH"
       }
     ]
   }
   ```

1. Activer l'authentification IAM sur la base de données

   ```
   aws rds modify-db-cluster \
     --db-cluster-identifier my-database-cluster \
     --enable-iam-database-authentication \
     --region us-east-1
   ```

1. Configuration de l'utilisateur de base de données pour l'authentification IAM

   Pour RDS pour PostgreSQL :

   ```
   GRANT rds_iam TO jane_doe;
   ```

   Pour RDS pour MySQL et RDS pour MariaDB :

   ```
   ALTER USER 'jane_doe' IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS';
   ALTER USER 'jane_doe'@'%' REQUIRE SSL;
   ```

1. Le code de votre application client n'a pas besoin de changer. Le processus de connexion reste le même :

   Pour RDS pour PostgreSQL :

   ```
   # Generate authentication token
   export PGPASSWORD=$(aws rds generate-db-auth-token \
     --hostname my-database-proxy.proxy-ABCDEFGHIJKL01234.us-east-1.rds.amazonaws.com \
     --port 5432 \
     --username jane_doe \
     --region us-east-1)
   
   # Connect to database through proxy
   psql "host=my-database-proxy.proxy-ABCDEFGHIJKL01234.us-east-1.rds.amazonaws.com port=5432 user=jane_doe dbname=postgres password=$PGPASSWORD sslmode=require sslrootcert=us-east-1-bundle.pem"
   ```

   Pour RDS pour MySQL et RDS pour MariaDB :

   ```
   # Generate authentication token
   export MYSQL_PWD=$(aws rds generate-db-auth-token \
     --hostname my-database-proxy.proxy-ABCDEFGHIJKL01234.us-east-1.rds.amazonaws.com \
     --port 3306 \
     --username jane_doe \
     --region us-east-1)
   
   # Connect to database through proxy
   mysql -h my-database-proxy.proxy-ABCDEFGHIJKL01234.us-east-1.rds.amazonaws.com \
     -P 3306 \
     -u jane_doe \
     --ssl-ca=us-east-1-bundle.pem \
     --enable-cleartext-plugin
   ```

# Considérations relatives à la connexion RDS Proxy
<a name="rds-proxy-connections"></a>

## Configuration des paramètres de connexion
<a name="rds-proxy-connection-pooling-tuning"></a>

Pour ajuster le regroupement de connexion RDS Proxy, vous pouvez modifier les paramètres suivants :
+ [IdleClientTimeout](#rds-proxy-connection-pooling-tuning.idleclienttimeout)
+ [MaxConnectionsPercent](#rds-proxy-connection-pooling-tuning.maxconnectionspercent)
+ [MaxIdleConnectionsPercent](#rds-proxy-connection-pooling-tuning.maxidleconnectionspercent)
+ [ConnectionBorrowTimeout](#rds-proxy-connection-pooling-tuning.connectionborrowtimeout)

### IdleClientTimeout
<a name="rds-proxy-connection-pooling-tuning.idleclienttimeout"></a>

Vous pouvez spécifier la durée d’inactivité d’une connexion client avant que le proxy puisse la fermer. La valeur par défaut est de 1 800 secondes (30 minutes). 

Une connexion client est considérée comme *inactive* lorsque l'application ne soumet aucune nouvelle demande dans le délai défini après l'achèvement de la demande précédente. La connexion à la base de données sous-jacente reste ouverte et est renvoyée au regroupement de connexions. Ainsi, elle peut être réutilisée pour de nouvelles connexions client. Réduisez le délai d’expiration de la connexion client inactive si vous souhaitez que le proxy supprime proactivement les connexions obsolètes. Si votre charge de travail se connecte régulièrement au proxy, augmentez le délai d’expiration de la connexion client inactive pour économiser le coût d’établissement de connexions.

Ce paramètre est représenté par le champ **Idle client connection timeout** (Délai d'inactivité de la connexion client) dans la console RDS et le paramètre `IdleClientTimeout` dans l'AWS CLI et l'API. Pour savoir comment modifier la valeur du champ **Idle client connection timeout** (Délai d’inactivité de la connexion client) dans la console RDS, consultez [AWS Management Console](rds-proxy-modifying-proxy.md#rds-proxy-modifying-proxy.console). Pour apprendre à modifier la valeur du paramètre `IdleClientTimeout`, utilisez la commande de la CLI [modify-db-proxy](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy.html) ou l'opération d'API [ModifyDBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxy.html).

### MaxConnectionsPercent
<a name="rds-proxy-connection-pooling-tuning.maxconnectionspercent"></a>

Vous pouvez limiter le nombre de connexions qu'un RDS Proxy peut établir avec la base de données cible. Vous indiquez la limite, sous forme de pourcentage, des connexions maximales disponibles pour votre base de données. Ce paramètre est représenté par le champ **Connection pool maximum connections** (Connexions maximales du groupe de connexion) dans la console RDS et le paramètre `MaxConnectionsPercent` dans l'AWS CLI et l'API. 

La valeur `MaxConnectionsPercent` est exprimée en pourcentage du paramètre `max_connections` pour l'instance de base de données RDS utilisé par le groupe cible. Le proxy ne crée pas toutes ces connexions à l'avance. Ce paramètre permet au proxy d’établir ces connexions, car la charge de travail en a besoin.

Par exemple, pour une cible de base de données enregistrée avec `max_connections` définies sur 1 000 et `MaxConnectionsPercent` défini sur 95, RDS Proxy définit 950 connexions comme la limite supérieure pour les connexions simultanées à cette cible de base de données.

Le fait que votre charge de travail atteigne le nombre maximum de connexions à la base de données autorisées a souvent pour effet secondaire d'augmenter la latence globale des requêtes, ainsi que d'augmenter la métrique `DatabaseConnectionsBorrowLatency`. Vous pouvez surveiller les connexions à la base de données actuellement utilisées et le nombre total de connexions autorisées en comparant les métriques `DatabaseConnections` et `MaxDatabaseConnectionsAllowed`.

Pour définir ce paramètre, tenez compte des bonnes pratiques suivantes :
+ Prévoyez une marge de connexion suffisante pour les modifications du modèle de la charge de travail. Il est recommandé de définir le paramètre afin qu'il soit au moins 30 % supérieur à votre utilisation surveillée maximale récente. Comme RDS Proxy redistribue les quotas de connexion à la base de données entre plusieurs nœuds, les modifications de la capacité interne peuvent nécessiter une marge d'au moins 30 % pour les connexions supplémentaires afin d'éviter des latences d'emprunt plus importantes.
+ RDS Proxy réserve un certain nombre de connexions pour une surveillance active afin de permettre un basculement rapide, le routage du trafic et les opérations internes. La métrique `MaxDatabaseConnectionsAllowed` n'inclut pas ces connexions réservées. Elle représente le nombre de connexions disponibles pour répondre à la charge de travail et peut être inférieure à la valeur dérivée du paramètre `MaxConnectionsPercent`.

  Valeurs `MaxConnectionsPercent` minimales recommandées
  + db.t3.small : 30
  + db.t3.medium ou supérieur : 20

Pour savoir comment modifier la valeur du champ **Connection pool maximum connections** (Connexions maximales au groupe de connexion) dans la console RDS, consultez [AWS Management Console](rds-proxy-modifying-proxy.md#rds-proxy-modifying-proxy.console). Pour apprendre à modifier la valeur du paramètre `MaxConnectionsPercent`, utilisez la commande de la CLI [modify-db-proxy-target-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-target-group.html) ou l'opération d'API [ModifyDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyTargetGroup.html).

 Pour en savoir plus sur les limites de connexion aux bases de données, consultez [Nombre maximal de connexions aux bases de données](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.MaxConnections). 

### MaxIdleConnectionsPercent
<a name="rds-proxy-connection-pooling-tuning.maxidleconnectionspercent"></a>

Vous pouvez contrôler le nombre de connexions aux bases de données inactives que RDS Proxy peut conserver dans le groupe de connexion. Par défaut, RDS Proxy considère qu’une connexion à une base de données dans son groupe est *inactive* lorsqu’il n’y a pas eu d’activité sur la connexion pendant cinq minutes. 

La valeur `MaxIdleConnectionsPercent` est exprimée en pourcentage du paramètre `max_connections` du groupe de cibles de l’instance de base de données RDS. La valeur par défaut est de 50 % de `MaxConnectionsPercent` et la limite supérieure est la valeur de `MaxConnectionsPercent`. Par exemple, si `MaxConnectionsPercent` est défini sur 80, la valeur par défaut de `MaxIdleConnectionsPercent` est 40. Si la valeur de `MaxConnectionsPercent` n’est pas spécifiée, alors pour RDS for SQL Server, `MaxIdleConnectionsPercent` est défini sur 5 et pour tous les autres moteurs, la valeur par défaut est 50.

Une valeur élevée permet au proxy de laisser ouvert un pourcentage élevé de connexions inactives à la base de données. Avec une valeur faible, le proxy ferme un pourcentage élevé de connexions de base de données inactives. Si vos charges de travail sont imprévisibles, pensez à définir une valeur élevée pour `MaxIdleConnectionsPercent`. Cela signifie que RDS Proxy peut prendre en charge les vagues d'activité sans ouvrir de nombreuses nouvelles connexions aux bases de données. 

Ce paramètre est représenté par le paramètre `MaxIdleConnectionsPercent` du `DBProxyTargetGroup` dans l'AWS CLI et l'API. Pour apprendre à modifier la valeur du paramètre `MaxIdleConnectionsPercent`, utilisez la commande de la CLI [modify-db-proxy-target-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-target-group.html) ou l'opération d'API [ModifyDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyTargetGroup.html).

 Pour en savoir plus sur les limites de connexion aux bases de données, consultez [Nombre maximal de connexions aux bases de données](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.MaxConnections). 

### ConnectionBorrowTimeout
<a name="rds-proxy-connection-pooling-tuning.connectionborrowtimeout"></a>

Vous pouvez choisir combien de temps le RDS Proxy doit attendre la disponibilité d'utilisation d'une connexion à une base de données dans le groupe de connexion avant de renvoyer une erreur de dépassement de délai d'attente. La durée par défaut est de 120 secondes. Ce paramètre s'applique lorsque le nombre maximal de connexions est atteint et qu'aucune connexion n'est disponible dans le groupe de connexion. Il s’applique également si aucune instance de base de données appropriée n’est disponible pour traiter la requête en raison, par exemple, d’une opération de basculement en cours. À l’aide de ce paramètre, vous pouvez définir la meilleure période d’attente pour votre application sans avoir à modifier le délai d’attente de requête dans votre code d’application.

Ce paramètre est représenté par le champ **Connection borrow timeout** (Délai d'expiration d'emprunt de connexion) dans la console RDS ou le paramètre `ConnectionBorrowTimeout` du `DBProxyTargetGroup` dans l'AWS CLI ou l'API. Pour savoir comment modifier la valeur du champ **Connection borrow timeout** (Délai d’expiration d’emprunt de connexion) dans la console RDS, consultez [AWS Management Console](rds-proxy-modifying-proxy.md#rds-proxy-modifying-proxy.console). Pour apprendre à modifier la valeur du paramètre `ConnectionBorrowTimeout`, utilisez la commande de la CLI [modify-db-proxy-target-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-target-group.html) ou l'opération d'API [ModifyDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyTargetGroup.html).

## Connexions client et connexions aux bases de données
<a name="rds-proxy-connection-life"></a>

Les connexions entre votre application et RDS Proxy sont appelées connexions client. Les connexions d'un proxy à la base de données sont appelées connexions à la base de données. Lorsque vous utilisez RDS Proxy, les connexions client s'arrêtent au niveau du proxy tandis que les connexions à la base de données sont gérées au sein de RDS Proxy.

Le regroupement des connexions côté application peut offrir l’avantage de réduire l’établissement de connexions récurrentes entre votre application et RDS Proxy.

Tenez compte des aspects de configuration suivants avant d’implémenter un regroupement de connexions côté application :
+ Durée de vie maximale d’une connexion client : RDS Proxy impose une durée de vie maximale de 24 heures aux connexions client. Cette valeur n'est pas configurable. Configurez votre regroupement avec une durée de vie maximale inférieure à 24 heures afin d’éviter des interruptions inattendues de la connexion client. 
+ Délai d’inactivité de la connexion client : RDS Proxy impose une durée d’inactivité maximale pour les connexions client. Configurez votre regroupement avec un délai d'inactivité inférieur au délai d'inactivité de votre connexion client pour RDS Proxy afin d'éviter les interruptions de connexion inattendues.

Le nombre maximal de connexions client configurées dans votre regroupement de connexions côté application ne doit pas nécessairement être limité au paramètre **max\$1connections** pour RDS Proxy.

Le regroupement des connexions client prolonge leur durée de vie. Si vos connexions sont épinglées, le regroupement des connexions client peut réduire l'efficacité du multiplexage. Les connexions client épinglées mais inactives dans le regroupement de connexions côté application continuent de conserver une connexion à la base de données et empêchent la réutilisation de cette connexion par d’autres connexions client. Consultez les journaux de votre proxy pour vérifier si vos connexions sont épinglées.

**Note**  
RDS Proxy ferme les connexions à la base de données après 24 heures lorsqu'elles ne sont plus utilisées. Le proxy effectue cette action indépendamment de la valeur du paramètre de connexions inactives maximum.

# Contournement de l’épinglage d’un proxy RDS
<a name="rds-proxy-pinning"></a>

 Le multiplexage est plus efficace lorsque les demandes de base de données ne dépendent pas des informations d’état issues de demandes précédentes. Dans ce cas, le proxy RDS peut réutiliser une connexion à la fin de chaque transaction. Ces informations d’état incluent la plupart des variables et des paramètres de configuration que vous pouvez modifier à l’aide des instructions `SET` ou `SELECT`. Les transactions SQL sur une connexion client peuvent se multiplexer entre les connexions de base de données sous-jacentes par défaut. 

 Vos connexions au proxy peuvent entrer dans un état appelé *épinglage*. Lorsqu’une connexion est épinglée, chaque transaction ultérieure utilise la même connexion de base de données sous-jacente jusqu’à la fin de la session. De même, les autres connexions client ne peuvent pas réutiliser cette connexion à la base de données tant que la session n’est pas terminée. La session se termine lorsque la connexion client est supprimée. 

 Le proxy RDS épingle automatiquement une connexion client à une connexion de base de données spécifique lorsqu’il détecte un changement d’état de session qui n’est pas approprié pour d’autres sessions. L’épinglage réduit l’efficacité de la réutilisation des connexions. Si la totalité, ou presque, de vos connexions font l’objet d’un épinglage, pensez à modifier le code de votre application ou votre charge de travail afin de réduire les conditions à l’origine de l’épinglage. 

Par exemple, votre application modifie une variable de session ou un paramètre de configuration. Dans ce cas, les instructions ultérieures peuvent reposer sur la nouvelle variable ou le nouveau paramètre pour entrer en vigueur. Ainsi, lorsque le proxy RDS traite des demandes de modification des variables ou des paramètres de configuration de session, il épingle cette session à la connexion de base de données. De cette manière, l’état de session reste en vigueur pour toutes les transactions ultérieures de la même session. 

 Pour les moteurs de bases de données, cette règle ne s’applique pas à tous les paramètres que vous pouvez définir. Le proxy RDS suit certaines instructions et variables. Ainsi, le proxy RDS n’épingle pas la session lorsque vous les modifiez. Dans ce cas, le proxy RDS réutilise la connexion uniquement pour les autres sessions dont les valeurs de ces paramètres sont identiques. Pour plus de détails sur ce que le proxy RDS suit pour un moteur de base de données, consultez ce qui suit : 
+ [Ce que le proxy RDS suit pour les bases de données RDS for SQL Server](#rds-proxy-pinning.sql-server-tracked-vars)
+ [Ce que le proxy RDS suit pour les bases de données RDS for MariaDB et RDS for MySQL](#rds-proxy-pinning.mysql-tracked-vars)

## Ce que le proxy RDS suit pour les bases de données RDS for SQL Server
<a name="rds-proxy-pinning.sql-server-tracked-vars"></a>

Le proxy RDS suit les instructions SQL Server suivantes :
+ `USE`
+ `SET ANSI_NULLS`
+ `SET ANSI_PADDING`
+ `SET ANSI_WARNINGS`
+ `SET ARITHABORT`
+ `SET CONCAT_NULL_YIELDS_NULL`
+ `SET CURSOR_CLOSE_ON_COMMIT`
+ `SET DATEFIRST`
+ `SET DATEFORMAT`
+ `SET LANGUAGE`
+ `SET LOCK_TIMEOUT`
+ `SET NUMERIC_ROUNDABORT`
+ `SET QUOTED_IDENTIFIER`
+ `SET TEXTSIZE`
+ `SET TRANSACTION ISOLATION LEVEL`

## Ce que le proxy RDS suit pour les bases de données RDS for MariaDB et RDS for MySQL
<a name="rds-proxy-pinning.mysql-tracked-vars"></a>

Le proxy RDS suite les instructions MySQL et MariaDB suivantes :
+ DROP DATABASE
+ DROP SCHEMA
+ USE

Le proxy RDS suit les variables MySQL et MariaDB suivantes :
+ `AUTOCOMMIT`
+ `AUTO_INCREMENT_INCREMENT`
+ `CHARACTER SET (or CHAR SET)`
+ `CHARACTER_SET_CLIENT`
+ `CHARACTER_SET_DATABASE`
+ `CHARACTER_SET_FILESYSTEM`
+ `CHARACTER_SET_CONNECTION`
+ `CHARACTER_SET_RESULTS`
+ `CHARACTER_SET_SERVER`
+ `COLLATION_CONNECTION`
+ `COLLATION_DATABASE`
+ `COLLATION_SERVER`
+ `INTERACTIVE_TIMEOUT`
+ `NAMES`
+ `NET_WRITE_TIMEOUT`
+ `QUERY_CACHE_TYPE`
+ `SESSION_TRACK_SCHEMA`
+ `SQL_MODE`
+ `TIME_ZONE`
+ `TRANSACTION_ISOLATION (or TX_ISOLATION)`
+ `TRANSACTION_READ_ONLY (or TX_READ_ONLY)`
+ `WAIT_TIMEOUT`

**Note**  
Le proxy RDS suit les modifications apportées aux variables `TRANSACTION_ISOLATION` et `TRANSACTION_READ_ONLY` lorsque vous les définissez au cours dans le champ de la session. Toutefois, si vous les définissez lors du prochain champ de transaction, le proxy RDS épingle les connexions. Ce comportement s’applique que vous utilisiez une instruction `SET` ou `SET TRANSACTION` pour configurer ces valeurs.

## Minimiser l’épinglage
<a name="rds-proxy-pinning.minimizing"></a>

 Le réglage des performances du proxy RDS entraîne une tentative d’optimisation de la réutilisation des connexions au niveau de la transaction (multiplexage) en réduisant l’épinglage. 

Vous pouvez minimiser l’épinglage en procédant comme suit : 
+  Évitez les requêtes de base de données inutiles qui pourraient provoquer l’épinglage. 
+  Définissez les variables et les paramètres de configuration de manière cohérente sur toutes les connexions. De cette façon, les sessions ultérieures sont plus susceptibles de réutiliser les connexions qui ont ces paramètres particuliers. 

   En revanche, pour PostgreSQL, la définition d’une variable entraîne l’épinglage de la session. 
+  Pour une base de données de la famille de moteur MySQL, appliquez un filtre d’épinglage de session au proxy. Vous pouvez configurer certains types d’opérations pour qu’elles n’épinglent pas la session si vous savez que cela n’affecte pas le bon fonctionnement de votre application. 
+  Découvrez la fréquence de l'épinglage en surveillant la CloudWatch métrique `DatabaseConnectionsCurrentlySessionPinned` Amazon. Pour en savoir plus sur ce sujet et sur d'autres métriques CloudWatch, consultez la section [Surveillance des métriques RDS Proxy avec Amazon CloudWatchSurveillance de RDS Proxy avec CloudWatch](rds-proxy.monitoring.md). 
+  Si vous utilisez des instructions `SET` pour exécuter une initialisation identique pour chaque connexion client, vous pouvez conserver le multiplexage au niveau de la transaction. Dans ce cas, vous déplacez les instructions qui définissent l’état initial de la session vers la requête d’initialisation utilisée par un proxy. Cette propriété est une chaîne contenant une ou plusieurs instructions SQL, séparées par des points-virgules. 

   Par exemple, vous pouvez définir une requête d’initialisation pour un proxy qui établit certains paramètres de configuration. Le proxy RDS applique ensuite ces paramètres dès qu’il configure une nouvelle connexion pour ce proxy. Vous pouvez supprimer les instructions `SET` correspondantes de votre code d’application, afin qu’elles n’interfèrent pas avec le multiplexage au niveau de la transaction. 

   Pour les métriques relatives à la fréquence d’épinglage d’un proxy, consultez [Surveillance des métriques RDS Proxy avec Amazon CloudWatchSurveillance de RDS Proxy avec CloudWatch](rds-proxy.monitoring.md). 

## Conditions qui entraînent l’épinglage pour toutes les familles de moteurs
<a name="rds-proxy-pinning.all"></a>

 Le proxy épingle la session à la connexion en cours dans les situations suivantes où le multiplexage peut entraîner un comportement inattendu : 
+ Le proxy épingle la session si la taille de texte de l’instruction est supérieure à 16 Ko.

## Conditions qui entraînent l’épinglage pour RDS for Microsoft SQL Server
<a name="rds-proxy-pinning.sqlserver"></a>

 Pour RDS for SQL Server, les interactions suivantes entraînent également l’épinglage : 
+ Utilisation de plusieurs ensembles de résultats actifs (MARS). Pour plus d’informations sur MARS, consultez la documentation [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/relational-databases/native-client/features/using-multiple-active-result-sets-mars?view=sql-server-ver16).
+ Utilisation de la communication DTC (Distributed Transaction Coordinator).
+ Création de tables temporaires, de transactions, de curseurs ou d’instructions préparées.
+ À l’aide des instructions `SET` suivantes :
  + `SET ANSI_DEFAULTS`
  + `SET ANSI_NULL_DFLT`
  + `SET ARITHIGNORE`
  + `SET DEADLOCK_PRIORITY`
  + `SET FIPS_FLAGGER`
  + `SET FMTONLY`
  + `SET FORCEPLAN`
  + `SET IDENTITY_INSERT`
  + `SET NOCOUNT`
  + `SET NOEXEC`
  + `SET OFFSETS`
  + `SET PARSEONLY`
  + `SET QUERY_GOVERNOR_COST_LIMIT`
  + `SET REMOTE_PROC_TRANSACTIONS`
  + `SET ROWCOUNT`
  + `SET SHOWPLAN_ALL`, `SHOWPLAN_TEXT` et `SHOWPLAN_XML`
  + `SET STATISTICS`
  + `SET XACT_ABORT`

## Conditions qui entraînent l’épinglage pour RDS for MariaDB et RDS for MySQL
<a name="rds-proxy-pinning.mysql"></a>

 Pour MariaDB et MySQL, les interactions suivantes entraînent également l’épinglage : 
+ Le proxy épingle la session en cas d’instructions de verrouillage de table `LOCK TABLE`, `LOCK TABLES` ou `FLUSH TABLES WITH READ LOCK` explicites. 
+ La création de verrous nommés à l’aide de `GET_LOCK` entraîne le proxy à épingler la session. 
+ La définition d’une variable utilisateur ou système (sauf exceptions) épingle la session au proxy. Si cela limite considérablement la réutilisation des connexions, vous pouvez configurer des opérations `SET` pour éviter l’épinglage. Pour ce faire, ajustez la propriété des filtres d’épinglage de session. Pour plus d’informations, consultez [Création d’un proxy pour Amazon RDS](rds-proxy-creating.md) et [Modification d’un RDS Proxy](rds-proxy-modifying-proxy.md).
+ Le proxy épingle la session lors de la création d’une table temporaire. De cette façon, le contenu de la table temporaire est conservé tout au long de la session, sans tenir compte des limites de transaction. 
+ L’appel des fonctions `ROW_COUNT` et `FOUND_ROWS` entraîne parfois un épinglage. 
+ Le proxy épingle la session en cas d’instructions préparées. Cette règle s’applique si l’instruction préparée utilise du texte SQL ou le protocole binaire. 
+ Le proxy RDS n’épingle pas les connexions lorsque vous utilisez SET LOCAL.
+ L’appel de procédures et de fonctions stockées ne provoque pas d’épinglage. Le proxy RDS ne détecte aucun changement d’état de session résultant de tels appels. Assurez-vous que votre application ne modifie pas l’état de session dans les routines stockées si vous reposez sur cet état de session pour persister entre les transactions. Par exemple, le proxy RDS n’est actuellement pas compatible avec une procédure stockée qui crée une table temporaire qui est conservée dans toutes les transactions. 
+ Requêtes avec commentaires exécutables pour MySQL (syntaxe /\$1 \$1 ... \$1/) ou MariaDB (syntaxe /\$1M \$1 ... \$1/) provoquent un épinglage. Le proxy RDS ne peut pas analyser le code SQL intégré à ces commentaires pour suivre les changements d'état de session.

 Si vous avez des connaissances avancées sur le comportement de votre application, vous pouvez ignorer le comportement d’épinglage de certaines instructions d’application. Pour ce faire, sélectionnez l’option **Filtres d’épinglage de session** lors de la création du proxy. Actuellement, vous pouvez désactiver l’épinglage de session pour définir des variables de session et des paramètres de configuration. 

## Conditions qui entraînent l’épinglage pour RDS pour PostgreSQL
<a name="rds-proxy-pinning.postgres"></a>

 Pour PostgreSQL, les interactions suivantes provoquent également l’épinglage : 
+  Utilisation des commandes `SET`.
+  Utilisation des commandes `PREPARE`, `DISCARD`, `DEALLOCATE` ou `EXECUTE` pour gérer les instructions préparées.
+  Création de séquences, de tables ou de vues temporaires.
+  Déclaration de curseurs.
+  Suppression de l’état de la session.
+  Écoute d’un canal de notification.
+  Chargement d’un module de bibliothèque comme `auto_explain`.
+  Manipulation de séquences à l’aide de fonctions comme `nextval` et `setval`.
+  Interaction avec des verrous à l’aide de fonctions comme `pg_advisory_lock` et `pg_try_advisory_lock`. 
**Note**  
Le proxy RDS ne s’épingle pas aux verrous consultatifs au niveau des transactions, en particulier `pg_advisory_xact_lock`, `pg_advisory_xact_lock_shared`, `pg_try_advisory_xact_lock` et `pg_try_advisory_xact_lock_shared`.
+ Définition d’un paramètre ou rétablissement de sa valeur par défaut. Plus précisément, l’utilisation des commandes `SET` et `set_config` pour attribuer des valeurs par défaut aux variables de session.
+ L’appel de procédures et de fonctions stockées ne provoque pas d’épinglage. Le proxy RDS ne détecte aucun changement d’état de session résultant de tels appels. Assurez-vous que votre application ne modifie pas l’état de session dans les routines stockées si vous reposez sur cet état de session pour persister entre les transactions. Par exemple, le proxy RDS n’est actuellement pas compatible avec une procédure stockée qui crée une table temporaire qui est conservée dans toutes les transactions. 
+ Suppression de l’état de la session. Si vous utilisez des bibliothèques de regroupement de connexions avec une requête `DISCARD ALL` configurée comme une requête de réinitialisation, le proxy RDS épingle votre connexion client lors de la publication. Cela réduit l’efficacité du multiplexage du proxy et peut entraîner des résultats inattendus, car la commande `DISCARD ALL` peut interférer avec la gestion de l’état de session.

# Suppression d'un RDS Proxy
<a name="rds-proxy-deleting"></a>

 Vous pouvez supprimer un proxy si vous n’en avez plus besoin. Vous pouvez également supprimer un proxy si vous mettez hors service l’instance ou le cluster de bases de données qui lui est associé. 

## AWS Management Console
<a name="rds-proxy-deleting.console"></a>

**Suppression d'un proxy**

1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon RDS à l’adresse [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1.  Dans le panneau de navigation, sélectionnez **Proxies**. 

1.  Choisissez le proxy à supprimer de la liste. 

1.  Sélectionnez **Suppression du proxy**. 

## AWS CLI
<a name="rds-proxy-deleting.CLI"></a>

 Pour supprimer un proxy de base de données, utilisez la commande de l'AWS CLI [delete-db-proxy](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-proxy.html). Pour supprimer les associations connexes, utilisez également la commande [deregister-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/deregister-db-proxy-targets.html). 

```
aws rds delete-db-proxy --name proxy_name
```

```
aws rds deregister-db-proxy-targets
    --db-proxy-name proxy_name
    [--target-group-name target_group_name]
    [--target-ids comma_separated_list]       # or
    [--db-instance-identifiers instance_id]       # or
    [--db-cluster-identifiers cluster_id]
```

## API RDS
<a name="rds-proxy-deleting.API"></a>

 Pour supprimer un proxy de base de données, appelez la fonction d'API Amazon RDS [DeleteDBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBProxy.html). Pour supprimer les éléments et associations connexes, vous appelez également les fonctions [DeleteDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBProxyTargetGroup.html) et [DeregisterDBProxyTargets](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeregisterDBProxyTargets.html). 