使用 Go 與客戶端緩存獲取秘 Secrets Manager 秘密值 - AWS Secrets Manager

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

使用 Go 與客戶端緩存獲取秘 Secrets Manager 秘密值

擷取秘密時,您可以使用 Secrets Manager Go 型快取元件進行快取以供將來使用。擷取快取的秘密比從 Secrets Manager 中擷取要快。由於呼叫 Secrets Manager API 需要花費成本,因此使用快取可以降低成本。如需您可以擷取機密的所有方法,請參閱 獲取秘密

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

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

若要使用元件,您必須擁有下列項目:

若要下載原始程式碼,請參閱在上快取用戶端的 Secrets Manager GitHub。

若要設定 Go 開發環境,請參閱 Go 程式設計語言網站上的 Golang 入門

必要許可:

  • secretsmanager:DescribeSecret

  • secretsmanager:GetSecretValue

如需詳細資訊,請參閱 許可參考

範例 擷取秘密

下列程式碼範例顯示擷取秘密的 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) }