

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Ottieni un valore segreto di Secrets Manager usando.NET con caching lato client
<a name="retrieving-secrets_cache-net"></a>

Quando si recupera un segreto, è possibile utilizzare il componente di caching basato su .NET di Secrets Manager per memorizzarlo nella cache per un uso futuro. Il recupero di un segreto memorizzato nella cache è più veloce rispetto al recupero da Secrets Manager. Poiché la chiamata a Secrets Manager comporta un costo APIs, l'utilizzo di una cache può ridurre i costi. Per tutti i modi in cui puoi recuperare i segreti, vedi [Ottieni segreti](retrieving-secrets.md).

La policy della cache è Least Recently Used (LRU), quindi quando la cache deve eliminare un segreto, elimina il segreto usato meno di recente. Di default, la cache aggiorna i segreti ogni ora. È possibile configurare [la frequenza con cui il segreto viene aggiornato](retrieving-secrets_cache-net-SecretCacheConfiguration.md#retrieving-secrets_cache-net-SecretCacheConfiguration-properties_CacheItemTTL) nella cache ed è possibile [collegarsi al recupero del segreto](retrieving-secrets_cache-net-ISecretCacheHook.md) per aggiungere altre funzionalità.

La cache non impone la rimozione di oggetti inutili (garbage collection) una volta liberati i riferimenti alla cache. L'implementazione della cache non include l'invalidazione della cache. L'implementazione della cache è incentrata sulla cache stessa e non è rafforzata o focalizzata sulla sicurezza. Se hai bisogno di un livello di sicurezza aggiuntivo, come la crittografia degli elementi nella cache, usa le interfacce e i metodi astratti forniti.

Per usare il componente, devi disporre dei seguenti elementi:
+ .NET Framework 4.6.2 o versioni successive o .NET Standard 2.0 o versioni successive. Consulta [Download .NET](https://dotnet.microsoft.com/en-us/download) sul sito Web di Microsoft .NET
+ L' AWS SDK per.NET. Per informazioni, consulta [AWS SDKs](asm_access.md#asm-sdks).

Per scaricare il codice sorgente, vedi [Caching client for .NET on](https://github.com/aws/aws-secretsmanager-caching-net ). GitHub

Per utilizzare la cache, creane prima un'istanza, quindi recupera il segreto usando `GetSecretString` o `GetSecretBinary`. Nei recuperi successivi, la cache restituisce la copia del segreto memorizzata nella cache.

**Recupero del pacchetto di caching**
+ Esegui una delle seguenti operazioni:
  + Nella directory del progetto, esegui il seguente comando della CLI .NET.

    ```
    dotnet add package AWSSDK.SecretsManager.Caching --version 1.0.6
    ```
  + Aggiungi il seguente riferimento al pacchetto al tuo file `.csproj`.

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

**Autorizzazioni richieste:**
+ `secretsmanager:DescribeSecret`
+ `secretsmanager:GetSecretValue`

Per ulteriori informazioni, consulta [Riferimento per le autorizzazioni](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 Recupero di un segreto**  
Il seguente esempio di codice mostra un metodo che recupera un segreto denominato. *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 Configurazione della durata dell'aggiornamento della cache Time To Live (TTL)**  
Il seguente esempio di codice mostra un metodo che recupera un segreto denominato *MySecret* e imposta la durata dell'aggiornamento della cache TTL su 24 ore.  

```
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 cache in memoria per i segreti richiesti da Secrets Manager. Si usa [GetSecretString](#retrieving-secrets_cache-net-SecretsManagerCache-methods-GetSecretString) o [GetSecretBinary](#retrieving-secrets_cache-net-SecretsManagerCache-methods-GetSecretBinary) per recuperare un segreto dalla cache. È possibile configurare le impostazioni della cache specificando un oggetto [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) nel costruttore. 

Per ulteriori informazioni, inclusi esempi, consulta [Ottieni un valore segreto di Secrets Manager usando.NET con caching lato client](retrieving-secrets_cache-net.md).

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

`public SecretsManagerCache()`  
Costruttore di default per un oggetto `SecretsManagerCache`.

`public SecretsManagerCache(IAmazonSecretsManager secretsManager)`  
Costruisce una nuova cache utilizzando un client di Secrets Manager creato utilizzando l'[AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html) fornito. Utilizza questo costruttore per personalizzare il client di Secrets Manager, ad esempio per utilizzare una regione o un endpoint specifico.  
**Parameters**    
secretsManager  
Il [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)da cui recuperare i segreti.

`public SecretsManagerCache(SecretCacheConfiguration config)`  
Costruisce una nuova cache del segreto utilizzando il [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) fornito. Utilizza questo costruttore per configurare la cache, ad esempio il numero di segreti da inserire nella cache e la frequenza di aggiornamento.  
**Parameters**    
config  
Un [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) che contiene informazioni di configurazione per la cache.

`public SecretsManagerCache(IAmazonSecretsManager secretsManager, SecretCacheConfiguration config)`  
Costruisce una nuova cache utilizzando un client Secrets Manager creato utilizzando il file fornito [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)e un[SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md). Utilizza questo costruttore per personalizzare il client di Secrets Manager, ad esempio per utilizzare una regione o un endpoint specifici e configurare la cache, ad esempio il numero di segreti da inserire nella cache e la frequenza di aggiornamento.  
**Parameters**    
secretsManager  
Il [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)da cui recuperare i segreti.  
config  
Un [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) che contiene informazioni di configurazione per la cache.

## Metodi
<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 segreto stringa da Secrets Manager.Parameters

secretId  
L'ARN o il nome del segreto da recuperare.

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

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

Recupera un segreto binario da Secrets Manager.Parameters

secretId  
L'ARN o il nome del segreto da recuperare.

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

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

Richiede il valore del segreto da Secrets Manager e aggiorna la cache con eventuali modifiche. Se non esiste una voce di cache esistente, ne crea una nuova. Restituisce `true` se l'aggiornamento ha esito positivo.Parameters

secretId  
L'ARN o il nome del segreto da recuperare.

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

`public SecretCacheItem GetCachedSecret(string secretId)`

Restituisce la voce di cache per il segreto specificato se presente nella cache. In caso contrario, recupera il segreto da Secrets Manager e crea una nuova voce di cache.Parameters

secretId  
L'ARN o il nome del segreto da recuperare.

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

Opzioni di configurazione della cache per un [SecretsManagerCache](retrieving-secrets_cache-net-SecretsManagerCache.md), come dimensione massima della cache e durata (TTL) per i segreti memorizzati nella cache.

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

Il TTL di un elemento della cache in millisecondi. Il valore predefinito è `3600000` ms o 1 ora. Il massimo è `4294967295` ms, vale a dire circa 49,7 giorni.

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

`public ushort MaxCacheSize { get; set; }`

La dimensione massima della cache. Il valore di default è 1024 segreti. Il numero massimo è pari a 65.535.

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

`public string VersionStage { get; set; }`

Imposta la versione dei segreti che si desidera memorizzare nella cache. Per ulteriori informazioni, consulta [Versioni del segreto](whats-in-a-secret.md#term_version). Il valore predefinito è `"AWSCURRENT"`.

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

`public IAmazonSecretsManager Client { get; set; }`

[AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)Da cui recuperare i segreti. Se è `null`, la cache crea un'istanza di un nuovo client. Il valore predefinito è `null`.

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

`public ISecretCacheHook CacheHook { get; set; }`

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

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

Un'interfaccia per collegarsi a una [SecretsManagerCache](retrieving-secrets_cache-net-SecretsManagerCache.md) per eseguire operazioni sui segreti memorizzati al suo interno. 

## Metodi
<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 l'oggetto per la memorizzazione nella cache.

Restituisce l'oggetto da memorizzare nella cache.

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

`object Get(object cachedObject);`

Deriva l'oggetto dall'oggetto memorizzato nella cache.

Restituisce l'oggetto da restituire dalla cache