

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Go 和客户端缓存获取 Secrets Manager 密钥值
<a name="retrieving-secrets_cache-go"></a>

在检索密钥时，您可以使用 Secrets Manager 基于 Go 的缓存组件来缓存密钥，以备将来使用。检索已缓存密钥比从 Secrets Manager 中检索密钥的速度要快。由于调用 Secrets Manager 需要付费 APIs，因此使用缓存可以降低成本。有关检索密钥的所有方法，请参阅 [获取密钥](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)。

要下载源代码，请参阅 S [ecrets Manager Go 缓存客户端](https://github.com/aws/aws-secretsmanager-caching-go ) GitHub。

要设置 Go 开发环境，请参阅 Go Programming Language 网站上的 [Golang 入门](https://golang.org/doc/install)。

**所需权限：**
+ `secretsmanager:DescribeSecret`
+ `secretsmanager:GetSecretValue`

有关更多信息，请参阅 [权限参考](auth-and-access.md#reference_iam-permissions)。

**Topics**
+ [type 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)
}
```