

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# .NET とクライアント側のキャッシュを使用して、Secrets Manager のシークレット値を取得する
<a name="retrieving-secrets_cache-net"></a>

シークレットを取得するときに、Secrets Manager の .NET ベースのキャッシュコンポーネントを使用して、将来使用するためにキャッシュすることができます。キャッシュされたシークレットの取得は、Secrets Manager からの取得よりも高速です。Secrets Manager API を呼び出すにはコストがかかるため、キャッシュを使用するとコストを削減できます。シークレットを取得するすべての方法については、「[シークレットの取得](retrieving-secrets.md)」を参照してください。

キャッシュポリシーは LRU (最近最も使われていない) であるため、キャッシュでシークレットを破棄する必要が生じた場合は、最も最近使われていないシークレットが破棄されます。デフォルトでは、1 時間ごとにキャッシュでシークレットが更新されます。キャッシュで[シークレットが更新される頻度](retrieving-secrets_cache-net-SecretCacheConfiguration.md#retrieving-secrets_cache-net-SecretCacheConfiguration-properties_CacheItemTTL)を設定できるだけでなく、[シークレットの取得にフック](retrieving-secrets_cache-net-ISecretCacheHook.md)させて機能を追加することもできます。

キャッシュ参照が解放されると、キャッシュはガベージコレクションを強制しません。キャッシュの実装には、キャッシュの無効化は含まれていません。キャッシュを実装するのはキャッシュを使用するためであり、セキュリティを強化するためでもセキュリティに焦点を当てるためでもありません。キャッシュ内のアイテムを暗号化するなど、セキュリティを強化する必要がある場合は、所定のインターフェイスと抽象メソッドを使用してください。

このコンポーネントを使用するには、以下が必要です。
+ .NET Framework 4.6.2 以上、または .NET Standard 2.0 以上。Microsoft .NET のウェブサイトの「[.NET のダウンロード](https://dotnet.microsoft.com/en-us/download)」を参照してください。
+  AWS SDK for .NET。「[AWS SDKs](asm_access.md#asm-sdks)」を参照してください。

ソースコードをダウンロードするには、GitHub の「[.NET キャッシュクライアント](https://github.com/aws/aws-secretsmanager-caching-net )」を参照してください。

キャッシュを使用するには、まずキャッシュをインスタンス化してから、`GetSecretString` または `GetSecretBinary` を使用して自分のシークレットを取得する必要があります。連続して取得すると、キャッシュはシークレットのキャッシュされたコピーを返します。

**キャッシュパッケージを入手するには**
+ 次のいずれかを行います。
  + プロジェクトディレクトリで次の .NET CLI コマンドを実行します。

    ```
    dotnet add package AWSSDK.SecretsManager.Caching --version 1.0.6
    ```
  + `.csproj` ファイルに次のパッケージリファレンスを追加します。

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

**必要な許可:**
+ `secretsmanager:DescribeSecret`
+ `secretsmanager:GetSecretValue`

詳細については、「[アクセス許可に関するリファレンス](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 シークレットを取得する**  
次のコード例では、*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 有効期限 (TTL) キャッシュ更新期間を設定する**  
次のコード例は、*MySecret* という名前のシークレットを取得し、TTL キャッシュ更新期間を 24 時間に設定する方法を示しています。  

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

Secrets Manager からリクエストされたシークレットのインメモリキャッシュ。[GetSecretString](#retrieving-secrets_cache-net-SecretsManagerCache-methods-GetSecretString) または [GetSecretBinary](#retrieving-secrets_cache-net-SecretsManagerCache-methods-GetSecretBinary) を使用して、キャッシュからシークレットを取得します。キャッシュの設定は、コンストラクタで [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) オブジェクトを渡すことで設定できます。

詳細と例については、「[.NET とクライアント側のキャッシュを使用して、Secrets Manager のシークレット値を取得する](retrieving-secrets_cache-net.md)」を参照してください。

## コンストラクタ
<a name="retrieving-secrets_cache-net-SecretsManagerCache-constructors"></a>

`public SecretsManagerCache()`  
`SecretsManagerCache` オブジェクトのデフォルトコンストラクタ。

`public SecretsManagerCache(IAmazonSecretsManager secretsManager)`  
提供された [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html) を用いて作成された Secrets Manager クライアントを使用して、新しいキャッシュを構築します。このコンストラクタを使用して、Secrets Manager クライアントをカスタマイズします (特定のリージョンまたはエンドポイントを使用するなど)。  
**パラメータ**    
secretsManager  
シークレットを取得する [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)。

`public SecretsManagerCache(SecretCacheConfiguration config)`  
提供された [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) を使用して、新しいシークレットキャッシュを構築します。このコンストラクタを使用してキャッシュを設定します (キャッシュするシークレットの数や更新頻度など)。  
**パラメータ**    
config  
キャッシュの設定情報が含まれている [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md)。

`public SecretsManagerCache(IAmazonSecretsManager secretsManager, SecretCacheConfiguration config)`  
提供された [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html) および [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md) を使用して作成された Secrets Manager クライアントを使用して、新しいキャッシュを構築します。このコンストラクタを使用して Secrets Manager クライアントをカスタマイズし (特定のリージョンまたはエンドポイントを使用するなど)、キャッシュを構成します (キャッシュするシークレットの数や更新頻度など)。  
**パラメータ**    
secretsManager  
シークレットを取得する [AmazonSecretsManagerClient](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/SecretsManager/TSecretsManagerClient.html)。  
config  
キャッシュの設定情報が含まれている [SecretCacheConfiguration](retrieving-secrets_cache-net-SecretCacheConfiguration.md)。

## 方法
<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)`

Secrets Manager から文字列シークレットを取得します。パラメータ

secretId  
取得するシークレットの ARN または名前。

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

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

Secrets Manager からバイナリシークレットを取得します。パラメータ

secretId  
取得するシークレットの ARN または名前。

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

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

Secrets Manager からのシークレット値をリクエストし、変更があればキャッシュを更新します。既存のキャッシュエントリがない場合は、新しいキャッシュエントリを作成します。更新に成功した場合は、`true` を返します。パラメータ

secretId  
取得するシークレットの ARN または名前。

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

`public SecretCacheItem GetCachedSecret(string secretId)`

指定されたシークレットのキャッシュエントリがキャッシュに存在する場合、そのキャッシュエントリを返します。それ以外の場合は、Secrets Manager からシークレットを取得し、新しいキャッシュエントリを作成します。パラメータ

secretId  
取得するシークレットの ARN または名前。

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

キャッシュされるシークレットの最大キャッシュサイズや有効期限 (TTL) などの、[SecretsManagerCache](retrieving-secrets_cache-net-SecretsManagerCache.md) のキャッシュ設定オプション。

## プロパティ
<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; }`

キャッシュ項目の TTL (ミリ秒単位)。デフォルトは `3600000` ミリ秒 (1 時間) です。最大値は `4294967295` ms で、約 49.7 日です。

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

`public ushort MaxCacheSize { get; set; }`

最大キャッシュサイズ。デフォルトは 1,024 個のシークレットです。最大値は 65,535 です。

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

`public string VersionStage { get; set; }`

キャッシュするシークレットのバージョン。詳細については、「[Secret versions](whats-in-a-secret.md#term_version)」(シークレットバージョン) を参照してください。デフォルトは `"AWSCURRENT"` です。

### クライアント
<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)。`null` の場合、キャッシュは新しいクライアントをインスタンス化します。デフォルトは `null` です。

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

`public ISecretCacheHook CacheHook { get; set; }`

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

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

[SecretsManagerCache](retrieving-secrets_cache-net-SecretsManagerCache.md) に接続して、キャッシュに保存されているシークレットに対してアクションを実行するインターフェイス。

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

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

`object Put(object o);`

キャッシュに保存するオブジェクトを準備します。

キャッシュに保存するオブジェクトを返します。

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

`object Get(object cachedObject);`

キャッシュされたオブジェクトからオブジェクトを派生させます。

キャッシュから返すオブジェクトを返します