使用AWS Lambda函数和AWS Secrets Manager之间的客户端库,您可以快速、安全地缓存在应用程序执行期间需要的机密值。下面是一些示例代码以及访问SecretsManager所需的正确资源权限。
在AWS Lambda函数的IAM角色中,您需要执行以下操作:
以下是一个简单的Go示例代码,用于拉取一个存储在SecretsManager中的密码:
package main
import (
"fmt"
"os"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/secretsmanager"
)
func main() {
secretName := os.Getenv("SECRET_NAME")
session := session.Must(session.NewSession())
svc := secretsmanager.New(session)
input := &secretsmanager.GetSecretValueInput{
SecretId: aws.String(secretName),
}
result, err := svc.GetSecretValue(input)
if err != nil {
fmt.Println("Error retrieving secret value:", err)
return
}
fmt.Println("Secret value:", aws.StringValue(result.SecretString))
}
如果您是在本地或其他环境中运行示例,则需要设置“AWS_ACCESS_KEY_ID”和“AWS_SECRET_ACCESS_KEY”环境变量,以便Go SDK可以正确地验证您与AWS的身份验证。
示例中需要提供的环境变量包括“SECRET_NAME”,它是SecretsManager存储的密码的名称。对SecretsManager的访问权限配置如下:
Resources:
SecretsManagerPolicy:
Type: 'AWS::IAM::ManagedPolicy'
Properties:
Description: 'Policy for accessing secrets in SecretsManager'
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: