

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Obtener un valor secreto de Secrets Manager mediante .NET con almacenamiento en caché del cliente
<a name="retrieving-secrets_cache-net"></a>

Cuando recupera un secreto, puede utilizar el componente de almacenamiento en caché basado en .NET de Secrets Manager para utilizarlo más adelante. Recuperar un secreto almacenado en la memoria caché es más rápido que recuperarlo desde Secrets Manager. Como llamar a Secrets Manager conlleva un coste APIs, el uso de una memoria caché puede reducir los costes. Para conocer todas las formas en las que puede recuperar secretos, consulte [Obtener secretos](retrieving-secrets.md).

La política de la caché consiste en el algoritmo menos usado recientemente (LRU), por lo que, cada vez que la caché tiene que descartar un secreto, lo hace con el de uso menos reciente. De forma predeterminada, la caché actualiza secretos cada hora. Puede configurar la [frecuencia con la que se actualiza el secreto](retrieving-secrets_cache-net-SecretCacheConfiguration.md#retrieving-secrets_cache-net-SecretCacheConfiguration-properties_CacheItemTTL) en la memoria caché, y también [conectarse a la recuperación del secreto](retrieving-secrets_cache-net-ISecretCacheHook.md) para agregar más funcionalidad.

La memoria caché no fuerza la recopilación de elementos no utilizados una vez liberadas las referencias de la memoria caché. La implementación de la memoria caché no incluye la invalidación de la memoria caché. La implementación de la memoria caché se centra en la memoria caché en sí misma y no está reforzada ni centrada en la seguridad. Si necesita más seguridad, como cifrar elementos en la memoria caché, utilice las interfaces y los métodos abstractos que se proporcionan.

Para utilizar el componente, debe disponer de lo siguiente:
+ .NET Framework 4.6.2 o una versión posterior, o .NET Standard 2.0 o una versión posterior. Consulte [Download .NET](https://dotnet.microsoft.com/en-us/download) (Descargar .NET) en el sitio web de Microsoft .NET.
+ El AWS SDK para .NET. Consulte [AWS SDKs](asm_access.md#asm-sdks).

Para descargar el código fuente, consulte [Cliente de almacenamiento en caché para .NET](https://github.com/aws/aws-secretsmanager-caching-net ) on GitHub.

Para utilizar la caché, primero hay que crear una instancia y, a continuación, recuperar el secreto mediante `GetSecretString` o `GetSecretBinary`. En las recuperaciones posteriores, la caché devuelve la copia almacenada del secreto.

**Para obtener el paquete de almacenamiento en caché**
+ Realice una de las siguientes acciones:
  + Ejecute el siguiente comando de la CLI de .NET en el directorio del proyecto.

    ```
    dotnet add package AWSSDK.SecretsManager.Caching --version 1.0.6
    ```
  + Agregue la siguiente referencia de paquete al archivo `.csproj`.

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

**Permisos necesarios: **
+ `secretsmanager:DescribeSecret`
+ `secretsmanager:GetSecretValue`

Para obtener más información, consulte [Referencia de permisos](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 Recuperación de un secreto**  
En el siguiente ejemplo de código se muestra un método que recupera un secreto denominado. *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 Configurar la duración de la actualización de la memoria caché del tiempo de vida (TTL)**  
El siguiente ejemplo de código muestra un método que recupera un secreto denominado *MySecret* y establece la duración de la actualización de la caché TTL en 24 horas.  

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

Una caché en memoria para los secretos solicitados a Secrets Manager. Utilice [GetSecretString](#retrieving-secrets_cache-net-SecretsManagerCache-methods-GetSecretString) o [GetSecretBinary](#retrieving-secrets_cache-net-SecretsManagerCache-methods-GetSecretBinary) para recuperar un secreto de la caché. Puede configurar los ajustes de la memoria caché si transfiere un objeto [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) en el constructor. 

Para obtener más información, incluidos algunos ejemplos, consulte [Obtener un valor secreto de Secrets Manager mediante .NET con almacenamiento en caché del cliente](retrieving-secrets_cache-net.md).

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

`public SecretsManagerCache()`  
Constructor predeterminado de un objeto `SecretsManagerCache`.

`public SecretsManagerCache(IAmazonSecretsManager secretsManager)`  
Construye una nueva memoria caché con un cliente de Secrets Manager creado a partir del [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html) proporcionado. Utilice este constructor para personalizar el cliente de Secrets Manager, como por ejemplo, para utilizar una región o un punto de conexión específicos.  
**Parameters**    
secretsManager  
El del que [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)se van a recuperar los secretos.

`public SecretsManagerCache(SecretCacheConfiguration config)`  
Construye una nueva caché del secreto mediante el [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) proporcionado. Utilice este constructor para configurar la memoria caché, por ejemplo, la cantidad de secretos que se almacenarán en la caché y la frecuencia con la que se actualizará.  
**Parameters**    
config  
Una [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) que contiene información de configuración de la caché.

`public SecretsManagerCache(IAmazonSecretsManager secretsManager, SecretCacheConfiguration config)`  
Construye una nueva caché mediante un cliente Secrets Manager creado con el proporcionado [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)y un[SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md). Utilice este constructor para personalizar el cliente de Secrets Manager, por ejemplo, para utilizar una región o un punto de conexión específicos, así como para configurar la caché, por ejemplo, la cantidad de secretos que se almacenarán en la caché y la frecuencia con la que se actualizará.  
**Parameters**    
secretsManager  
El [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)para recuperar secretos.  
config  
Una [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) que contiene información de configuración de la caché.

## Métodos
<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)`

Recupera un secreto de cadena de Secrets Manager.Parameters

secretId  
El ARN o nombre del secreto que hay que recuperar.

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

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

Recupera un secreto en formato binario desde Secrets Manager.Parameters

secretId  
El ARN o nombre del secreto que hay que recuperar.

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

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

Solicita el valor del secreto a Secrets Manager y actualiza la caché con los cambios que se hayan producido. Si no hay ninguna entrada en la caché, creará una nueva. Devuelve `true` si la actualización se realiza correctamente.Parameters

secretId  
El ARN o nombre del secreto que hay que recuperar.

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

`public SecretCacheItem GetCachedSecret(string secretId)`

Devuelve la entrada de la caché para el secreto especificado si existe en la memoria. En caso contrario, recupera el secreto desde Secrets Manager y crea una nueva entrada en la caché.Parameters

secretId  
El ARN o nombre del secreto que hay que recuperar.

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

Opciones de configuración de la caché para un [SecretsManagerCache](retrieving-secrets_cache-net-SecretsManagerCache.md), como el tamaño máximo de esta y el periodo de vida (TTL) de los secretos almacenados en ella.

## Propiedades
<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; }`

El TTL de un elemento de la caché en milisegundos. El valor predeterminado es de `3600000` ms o 1 hora. El máximo es `4294967295` ms, que son aproximadamente 49,7 días.

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

`public ushort MaxCacheSize { get; set; }`

El tamaño máximo de la caché. El valor predeterminado es de 1024 secretos. El máximo es 65 535.

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

`public string VersionStage { get; set; }`

La versión de los secretos que desea almacenar en caché. Para obtener más información, consulte [Versiones del secreto](whats-in-a-secret.md#term_version). El valor predeterminado es `"AWSCURRENT"`.

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

`public IAmazonSecretsManager Client { get; set; }`

Los de [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)los que recuperar secretos. Si es `null`, la caché crea instancias de un nuevo cliente. El valor predeterminado es `null`.

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

`public ISecretCacheHook CacheHook { get; set; }`

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

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

Una interfaz para conectarse a una [SecretsManagerCache](retrieving-secrets_cache-net-SecretsManagerCache.md) y realizar acciones sobre los secretos almacenados en ella. 

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

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

`object Put(object o);`

Prepara el objeto para almacenarlo en la caché.

Devuelve el objeto que se almacenará en la caché.

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

`object Get(object cachedObject);`

Deriva el objeto a partir del objeto almacenado en caché.

Devuelve el objeto que se devolverá de la caché