

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.

# Obtenez une valeur secrète de Secrets Manager en utilisant .NET avec mise en cache côté client
<a name="retrieving-secrets_cache-net"></a>

Lorsque vous récupérez un secret, vous pouvez utiliser le composant de mise en cache basé sur .NET de Secrets Manager pour le mettre en cache en vue d'une utilisation future. Il est plus rapide de récupérer un secret mis en cache que de le récupérer à partir de Secrets Manager. L'appel de Secrets Manager étant payant APIs, l'utilisation d'un cache peut réduire vos coûts. Pour connaître toutes les manières dont vous pouvez récupérer des secrets, consultez[Obtenez des secrets](retrieving-secrets.md).

La politique de cache est la moins récemment utilisée (LRU). Ainsi, lorsque le cache doit supprimer un secret, il supprime le secret le moins récemment utilisé. Par défaut, le cache actualise les secrets toutes les heures. Vous pouvez configurer [la fréquence d'actualisation du secret](retrieving-secrets_cache-net-SecretCacheConfiguration.md#retrieving-secrets_cache-net-SecretCacheConfiguration-properties_CacheItemTTL) dans le cache et [utiliser un hook pour la récupération du secret](retrieving-secrets_cache-net-ISecretCacheHook.md) afin d’ajouter plus de fonctionnalités.

Le cache ne force pas le récupérateur de mémoire une fois que les références du cache sont libérées. L'implémentation du cache n'inclut pas l'invalidation du cache. L'implémentation du cache se concentre sur le cache lui-même et n'est pas renforcée ou ciblée sur le plan de la sécurité. Si vous avez besoin d'une sécurité supplémentaire, telle que le chiffrement d'éléments dans le cache, utilisez les interfaces et les méthodes abstraites fournies.

Pour pouvoir utiliser le composant, vous devez disposer des éléments suivants :
+ Framework .NET 4.6.2 ou version ultérieure, ou .NET Standard 2.0 ou version ultérieure. Consultez [Télécharger .NET](https://dotnet.microsoft.com/en-us/download) sur le site web Microsoft .NET.
+ Le AWS SDK pour .NET. Consultez [AWS SDKs](asm_access.md#asm-sdks).

Pour télécharger le code source, consultez la section [Client de mise en cache pour .NET](https://github.com/aws/aws-secretsmanager-caching-net ) sur GitHub.

Pour utiliser le cache, instanciez-le d'abord, puis récupérez votre secret en utilisant `GetSecretString` ou `GetSecretBinary`. Lors de récupérations successives, le cache renvoie la copie en cache du secret.

**Pour obtenir le package de mise en cache**
+ Effectuez l’une des actions suivantes :
  + Exécutez la commande .NET CLI suivante dans le répertoire de votre projet.

    ```
    dotnet add package AWSSDK.SecretsManager.Caching --version 1.0.6
    ```
  + Ajoutez la référence de package suivante à votre fichier `.csproj`.

    ```
    <ItemGroup>
        <PackageReference Include="AWSSDK.SecretsManager.Caching" Version="1.0.6" />
    </ItemGroup>
    ```

**Autorisations requises : **
+ `secretsmanager:DescribeSecret`
+ `secretsmanager:GetSecretValue`

Pour de plus amples informations, veuillez consulter [Référence des autorisations ](auth-and-access.md#reference_iam-permissions).

**Topics**
+ [SecretsManagerCache](retrieving-secrets_cache-net-SecretsManagerCache.md)
+ [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md)
+ [ISecretCacheHook](retrieving-secrets_cache-net-ISecretCacheHook.md)

**Example Récupérer un secret**  
L'exemple de code suivant montre une méthode qui récupère un secret nommé*MySecret*.  

```
using Amazon.SecretsManager.Extensions.Caching;

namespace LambdaExample 
{
    public class CachingExample 
    {
        private const string MySecretName ="MySecret";

        private SecretsManagerCache cache = new SecretsManagerCache();

        public async Task<Response>  FunctionHandlerAsync(string input, ILambdaContext context)
        {
            string MySecret = await cache.GetSecretString(MySecretName);
            
            // Use the secret, return success
            
        }
    }
}
```

**Example Configuration de la durée d'actualisation du cache de durée de vie (TTL)**  
L'exemple de code suivant montre une méthode qui récupère un secret nommé *MySecret* et définit la durée d'actualisation du cache TTL à 24 heures.  

```
using Amazon.SecretsManager.Extensions.Caching;

namespace LambdaExample
{
    public class CachingExample
    {
        private const string MySecretName = "MySecret";
        
        private static SecretCacheConfiguration cacheConfiguration = new SecretCacheConfiguration
        {
            CacheItemTTL = 86400000
        };
        private SecretsManagerCache cache = new SecretsManagerCache(cacheConfiguration);
        public async Task<Response> FunctionHandlerAsync(string input, ILambdaContext context)
        {
            string mySecret = await cache.GetSecretString(MySecretName);

            // Use the secret, return success
        }
    }
}
```

# SecretsManagerCache
<a name="retrieving-secrets_cache-net-SecretsManagerCache"></a>

Un cache en mémoire pour les secrets demandés à Secrets Manager. Vous utilisez [GetSecretString](#retrieving-secrets_cache-net-SecretsManagerCache-methods-GetSecretString) ou [GetSecretBinary](#retrieving-secrets_cache-net-SecretsManagerCache-methods-GetSecretBinary) pour récupérer un secret du cache. Vous pouvez configurer les paramètres de cache en transmettant un objet [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) dans le constructeur. 

Pour plus d'informations, ainsi que pour voir des exemples, consultez [Obtenez une valeur secrète de Secrets Manager en utilisant .NET avec mise en cache côté client](retrieving-secrets_cache-net.md).

## Constructeurs
<a name="retrieving-secrets_cache-net-SecretsManagerCache-constructors"></a>

`public SecretsManagerCache()`  
Constructeur par défaut d'un objet `SecretsManagerCache`.

`public SecretsManagerCache(IAmazonSecretsManager secretsManager)`  
Crée un cache à l'aide d'un client Secrets Manager créé à l'aide du [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html) fourni. Utilisez ce constructeur pour personnaliser le client Secrets Manager, par exemple, pour utiliser une région ou un point de terminaison spécifique.  
**Parameters**    
secretsManager  
Le [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)pour récupérer des secrets.

`public SecretsManagerCache(SecretCacheConfiguration config)`  
Crée un cache de secret à l'aide du [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) fourni. Utilisez ce constructeur pour configurer le cache, par exemple, le nombre de secrets à mettre en cache et la fréquence d'actualisation.  
**Parameters**    
config  
Une [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) qui contient des informations de configuration pour le cache.

`public SecretsManagerCache(IAmazonSecretsManager secretsManager, SecretCacheConfiguration config)`  
Construit un nouveau cache à l'aide d'un client Secrets Manager créé à l'aide des options fournies [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)et a. [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) Utilisez ce constructeur pour personnaliser le client Secrets Manager, par exemple, pour utiliser une région ou un point de terminaison spécifique, ainsi que pour configurer le cache, par exemple le nombre de secrets à mettre en cache et la fréquence d'actualisation.  
**Parameters**    
secretsManager  
Le [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)pour récupérer des secrets.  
config  
Une [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) qui contient des informations de configuration pour le cache.

## Méthodes
<a name="retrieving-secrets_cache-net-SecretsManagerCache-methods"></a>

### GetSecretString
<a name="retrieving-secrets_cache-net-SecretsManagerCache-methods-GetSecretString"></a>

 `public async Task<String> GetSecretString(String secretId)`

Récupère un secret de chaîne dans Secrets Manager.Parameters

secretId  
ARN ou nom du secret à récupérer.

### GetSecretBinary
<a name="retrieving-secrets_cache-net-SecretsManagerCache-methods-GetSecretBinary"></a>

`public async Task<byte[]> GetSecretBinary(String secretId)`

Récupère un secret binaire dans Secrets Manager.Parameters

secretId  
ARN ou nom du secret à récupérer.

### RefreshNowAsync
<a name="retrieving-secrets_cache-net-SecretsManagerCache-methods-RefreshNowAsync"></a>

`public async Task<bool> RefreshNowAsync(String secretId)`

Demande la valeur secrète à Secrets Manager et met à jour le cache avec toutes les modifications. Crée une entrée de cache s'il n'en existe pas déjà une. Renvoie `true` si l'actualisation est réussie.Parameters

secretId  
ARN ou nom du secret à récupérer.

### GetCachedSecret
<a name="retrieving-secrets_cache-net-SecretsManagerCache-methods-GetCachedSecret"></a>

`public SecretCacheItem GetCachedSecret(string secretId)`

Renvoie l'entrée de cache pour le secret spécifié s'il existe dans le cache. Sinon, récupère le secret à partir de Secrets Manager et crée une entrée de cache.Parameters

secretId  
ARN ou nom du secret à récupérer.

# SecretCacheConfiguration
<a name="retrieving-secrets_cache-net-SecretCacheConfiguration"></a>

Options de configuration du cache pour un [SecretsManagerCache](retrieving-secrets_cache-net-SecretsManagerCache.md), telles que la taille maximale du cache et la durée de vie (TTL) pour les secrets mis en cache.

## Propriétés
<a name="retrieving-secrets_cache-net-SecretCacheConfiguration-properties"></a>

### CacheItemTTL
<a name="retrieving-secrets_cache-net-SecretCacheConfiguration-properties_CacheItemTTL"></a>

`public uint CacheItemTTL { get; set; }`

Durée de vie (TTL) d'un élément de cache en millisecondes. La valeur par défaut est de `3600000` ms ou 1 heure. La valeur maximale est de `4294967295` ms, soit environ 49,7 jours.

### MaxCacheSize
<a name="retrieving-secrets_cache-net-SecretCacheConfiguration-properties_MaxCacheSize"></a>

`public ushort MaxCacheSize { get; set; }`

Taille de cache maximale. La valeur par défaut est de 1 024 secrets. Le valeur maximale est de 65 535.

### VersionStage
<a name="retrieving-secrets_cache-net-SecretCacheConfiguration-properties_VersionStage"></a>

`public string VersionStage { get; set; }`

La version des secrets que vous souhaitez mettre en cache. Pour plus d'informations, consultez [Versions de secret](whats-in-a-secret.md#term_version). La valeur par défaut est `"AWSCURRENT"`.

### Client
<a name="retrieving-secrets_cache-net-SecretCacheConfiguration-properties_Client"></a>

`public IAmazonSecretsManager Client { get; set; }`

Le [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)pour récupérer des secrets. Si la valeur est `null`, le cache instancie un nouveau client. La valeur par défaut est `null`.

### CacheHook
<a name="retrieving-secrets_cache-net-SecretCacheConfiguration-properties_CacheHook"></a>

`public ISecretCacheHook CacheHook { get; set; }`

Une [ISecretCacheHook](retrieving-secrets_cache-net-ISecretCacheHook.md).

# ISecretCacheHook
<a name="retrieving-secrets_cache-net-ISecretCacheHook"></a>

Une interface permettant d’utiliser un hook pour un [SecretsManagerCache](retrieving-secrets_cache-net-SecretsManagerCache.md) et effectuer des actions sur les secrets stockés dans le cache. 

## Méthodes
<a name="retrieving-secrets_cache-net-ISecretCacheHook-methods"></a>

### Put
<a name="retrieving-secrets_cache-net-ISecretCacheHook-methods-Put"></a>

`object Put(object o);`

Préparez l'objet en vue de son stockage dans le cache.

Renvoie l'objet à stocker dans le cache.

### Get
<a name="retrieving-secrets_cache-net-ISecretCacheHook-methods-Get"></a>

`object Get(object cachedObject);`

Dérivez l'objet de l'objet mis en cache.

Renvoie l'objet à renvoyer à partir du cache