

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Go 搭配用戶端快取取得 Secrets Manager 秘密值
<a name="retrieving-secrets_cache-go"></a>

擷取秘密時，您可以使用 Secrets Manager Go 型快取元件進行快取以供將來使用。擷取快取的秘密比從 Secrets Manager 中擷取要快。由於呼叫 Secrets Manager API 需要花費成本，因此使用快取可以降低成本。如需您可以擷取機密的所有方法，請參閱 [取得秘密](retrieving-secrets.md)。

快取政策是「最近最少使用的 (LRU)」，因此當快取必須丟棄秘密時，其會丟棄最近最少使用的秘密。預設情況下，快取每小時重新整理一次秘密。您可以設定在快取中[重新整理機密的頻率](retrieving-secrets_cache-go_CacheConfig.md)，並可以[掛接到機密擷取](retrieving-secrets_cache-go_CacheHook.md)以新增更多功能。

一旦釋放快取參考，快取不會強制執行垃圾回收。快取實作不包括快取失效。快取實作著重於快取本身，而不是強化或著重於安全性。如果您需要額外的安全性，例如加密快取中的項目，請使用提供的介面和抽象方法。

若要使用元件，您必須擁有下列項目：
+ AWS 適用於 Go 的 SDK。請參閱 [AWS SDKs](asm_access.md#asm-sdks)。

若要下載開放程式碼，請參閱 [Secrets Manager Go 快取用戶端](https://github.com/aws/aws-secretsmanager-caching-go ) (在 GitHub 上)。

若要設定 Go 開發環境，請參閱 Go 程式設計語言網站上的 [Golang 入門](https://golang.org/doc/install)。

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

如需詳細資訊，請參閱[許可參考](auth-and-access.md#reference_iam-permissions)。

**Topics**
+ [輸入 Cache](retrieving-secrets_cache-go_cache.md)
+ [輸入 CacheConfig](retrieving-secrets_cache-go_CacheConfig.md)
+ [輸入 CacheHook](retrieving-secrets_cache-go_CacheHook.md)

**Example 擷取秘密**  
下列程式碼範例顯示擷取秘密的 Lambda 函數。  

```
package main

import (
	 "github.com/aws/aws-lambda-go/lambda"
	 "github.com/aws/aws-secretsmanager-caching-go/secretcache"
)

var (
	 secretCache, _ = secretcache.New()
)

func HandleRequest(secretId string) string {
	 result, _ := secretCache.GetSecretString(secretId)
	 
	 // Use the secret, return success
}

 func main() {
	 lambda. Start( HandleRequest)
}
```