

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Obtenha um segredo do Secrets Manager usando .NET com armazenamento em cache no lado do cliente
<a name="retrieving-secrets_cache-net"></a>

Ao recuperar um segredo, você pode usar o componente de cache baseado em .NET do Secrets Manager para armazená-lo em cache para uso futuro. Recuperar um segredo armazenado em cache é mais rápido do que recuperá-lo do Secrets Manager. Como há um custo para ligar para o Secrets Manager APIs, usar um cache pode reduzir seus custos. Para ver todas as formas pelas quais é possível recuperar segredos, consulte [Obter segredos](retrieving-secrets.md).

A política de caches é a do menos usado recentemente (LRU). Assim, quando o cache precisar descartar um segredo, escolherá o segredo menos usado recentemente. Por padrão, o cache atualiza segredos a cada hora. É possível configurar [com qual frequência o segredo será atualizado](retrieving-secrets_cache-net-SecretCacheConfiguration.md#retrieving-secrets_cache-net-SecretCacheConfiguration-properties_CacheItemTTL) no cache e será possível [se conectar à recuperação do segredo](retrieving-secrets_cache-net-ISecretCacheHook.md) para adicionar mais funcionalidades.

O cache não obriga a coleta de resíduos depois que as referências de cache são liberadas. A implementação do cache não inclui a invalidação do cache. A implementação do cache é centrada em torno do próprio cache, portanto, não é reforçada ou tem ênfase em segurança. Se você necessitar de mais segurança, como criptografia de itens no cache, use as interfaces e os métodos abstratos fornecidos.

Para usar o componente, é necessário ter o seguinte:
+ .NET Framework 4.6.2 ou superior, ou .NET Standard 2.0 ou superior. Consulte [Download .NET](https://dotnet.microsoft.com/en-us/download) (Baixe .NET) no site da Microsoft .NET.
+ O AWS SDK para.NET. Consulte [AWS SDKs](asm_access.md#asm-sdks).

Para baixar o código-fonte, consulte [Cliente de cache para.NET](https://github.com/aws/aws-secretsmanager-caching-net ) on GitHub.

Para usar o cache, primeiro instancie-o e, em seguida, recupere o seu segredo usando `GetSecretString` ou `GetSecretBinary`. Em recuperações sucessivas, o cache retorna a cópia armazenada em cache do segredo.

**Para obter o pacote de cache**
+ Execute um destes procedimentos:
  + Execute o seguinte comando CLI do .NET em seu diretório de projeto.

    ```
    dotnet add package AWSSDK.SecretsManager.Caching --version 1.0.6
    ```
  + Adicione a seguinte referência de pacote ao seu arquivo `.csproj`.

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

**Permissões obrigatórias: **
+ `secretsmanager:DescribeSecret`
+ `secretsmanager:GetSecretValue`

Para obter mais informações, consulte [Referência de permissões](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 Recuperar segredos**  
O exemplo de código a seguir mostra um método que recupera um segredo chamado*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 Configuração da duração da atualização do cache de vida útil (TTL)**  
O exemplo de código a seguir mostra um método que recupera um segredo chamado *MySecret* e define a duração da atualização do cache TTL como 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>

Um cache na memória para segredos solicitados no Secrets Manager. Você usa [GetSecretString](#retrieving-secrets_cache-net-SecretsManagerCache-methods-GetSecretString) ou [GetSecretBinary](#retrieving-secrets_cache-net-SecretsManagerCache-methods-GetSecretBinary) para recuperar um segredo do cache. É possível definir as configurações de cache executando-as em um objeto [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) no construtor. 

Para obter mais informações, incluindo exemplos, consulte [Obtenha um segredo do Secrets Manager usando .NET com armazenamento em cache no lado do cliente](retrieving-secrets_cache-net.md).

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

`public SecretsManagerCache()`  
Construtor padrão para um objeto `SecretsManagerCache`.

`public SecretsManagerCache(IAmazonSecretsManager secretsManager)`  
Constrói um novo cache usando um cliente do Secrets Manager criado usando o [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html) fornecido. Use esse construtor para personalizar o cliente do Secrets Manager, por exemplo, para usar uma região ou endpoint específico.  
**Parâmetros**    
secretsManager  
O [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)para recuperar segredos de.

`public SecretsManagerCache(SecretCacheConfiguration config)`  
Constrói um novo cache de segredo usando a [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) fornecida. Use esse construtor para configurar o cache, por exemplo, o número de segredos a serem armazenados em cache e com que frequência ele é atualizado.  
**Parâmetros**    
config  
Uma [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) que contém informações de configuração para o cache.

`public SecretsManagerCache(IAmazonSecretsManager secretsManager, SecretCacheConfiguration config)`  
Constrói um novo cache usando um cliente Secrets Manager criado usando o fornecido [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)e um[SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md). Use este construtor para personalizar o cliente do Secrets Manager, por exemplo, para usar uma região ou endpoint específico, assim como configurar o cache, por exemplo, o número de segredos a serem armazenados em cache e com que frequência ele será atualizado.  
**Parâmetros**    
secretsManager  
O [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)para recuperar segredos de.  
config  
Uma [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) que contém informações de configuração para o cache.

## 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 um segredo de string do Secrets Manager.Parâmetros

secretId  
O ARN ou o nome do segredo a ser recuperado.

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

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

Recupera um segredo de binário do Secrets Manager.Parâmetros

secretId  
O ARN ou o nome do segredo a ser recuperado.

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

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

Solicita o valor do segredo do Secrets Manager e atualiza o cache com quaisquer alterações. Se não houver entrada de cache existente, ele criará uma nova. Se a atualização for bem-sucedida, ele retornará `true`.Parâmetros

secretId  
O ARN ou o nome do segredo a ser recuperado.

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

`public SecretCacheItem GetCachedSecret(string secretId)`

Retorna a entrada de cache para o segredo especificado, se ele existir no cache. Caso contrário, ele recupera o segredo do Secrets Manager e cria uma nova entrada de cache.Parâmetros

secretId  
O ARN ou o nome do segredo a ser recuperado.

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

Opções de configuração de cache para um [SecretsManagerCache](retrieving-secrets_cache-net-SecretsManagerCache.md), como o tamanho máximo do cache e a vida útil (TTL) para segredos armazenados em cache.

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

O TTL de um item de cache em milissegundos. O padrão é de `3600000` minutos ou 1 hora. O máximo é de `4294967295` milissegundos, que é aproximadamente 49,7 dias.

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

`public ushort MaxCacheSize { get; set; }`

O tamanho máximo do cache. O padrão é de 1.024 segredos. O máximo é 65.535.

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

`public string VersionStage { get; set; }`

A versão de segredos que você deseja armazenar em cache. Para obter mais informações, consulte [Secret versions](whats-in-a-secret.md#term_version) (Versões de segredos). O padrão é `"AWSCURRENT"`.

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

`public IAmazonSecretsManager Client { get; set; }`

O [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)para recuperar segredos de. Se for `null`, o cache instancia um novo cliente. O padrão é `null`.

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

`public ISecretCacheHook CacheHook { get; set; }`

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

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

Uma interface para conectar a um [SecretsManagerCache](retrieving-secrets_cache-net-SecretsManagerCache.md) para executar ações nos segredos sendo armazenados no cache. 

## 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);`

Prepare o objeto para o armazenamento no cache.

Retorna o objeto a ser armazenado no cache.

### Obtenção
<a name="retrieving-secrets_cache-net-ISecretCacheHook-methods-Get"></a>

`object Get(object cachedObject);`

Derive o objeto do objeto sendo armazenado em cache.

Retorna o objeto a ser retornado do cache