[Go] AWS Secrets Manager の値を取得する
AWS Secrets Manager の値を Golang で取得するサンプルです。
package main
import (
"fmt"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/secretsmanager"
"os"
)
func main() {
// AWSリージョン
region := "ap-northeast-1"
// Secrets Manager の取得したいプロファイル名
secretName := "secretsManagerValues1"
var awsSession *session.Session
var err error
// 環境変数 AWS_PROFILE に値がある場合はプロファイル名を利用
if os.Getenv("AWS_PROFILE") != "" {
awsSession, err = session.NewSessionWithOptions(session.Options{
Config: aws.Config{Region: aws.String(region)},
Profile: os.Getenv("AWS_PROFILE"),
})
} else {
awsSession, err = session.NewSession(&aws.Config{
Region: aws.String(region),
})
}
sm := secretsmanager.New(awsSession)
input := &secretsmanager.GetSecretValueInput{
SecretId: aws.String(secretName),
VersionStage: aws.String("AWSCURRENT"),
}
result, err := sm.GetSecretValue(input)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(*result.SecretString)
}
値を取得するには、Secrets Manager から値を取得する権限がある必要があります。EC2インスタンスなどに直接、権限を持たせた Role を設定している場合は、そのまま実行できます。
プロファイルを指定する場合は、環境変数として AWS_PROFILE に設定します。
export AWS_PROFILE=PROFILE_NAME
値は json にて取得できます
> go run .
{"test1":"value1"}