TOP ▲ itcore TOPTIPSgo_ssm.php  タグ:aws go ssm

GO言語 SSMパラメタ取得 | itcore 2021年

import (
  "github.com/aws/aws-sdk-go/aws"
  "github.com/aws/aws-sdk-go/aws/session"
  "github.com/aws/aws-sdk-go/service/ssm"
  "os"
)
// 定数
const REGION = "ap-northeast-1"

// グローバル変数
var ENV = os.Getenv("ENV") // dev

func main() {
  sess := session.Must(session.NewSession())
  svc := ssm.New(
    sess,
    aws.NewConfig().WithRegion(REGION),
  )

  // 1つの値を取得
  param_id := "/" + ENV + "/app/id" // /dev/app/id
  res_ssm1, err := svc.GetParameter(&ssm.GetParameterInput{
    Name: aws.String(param_id),
    WithDecryption: aws.Bool(true), // 暗号化していない時も指定して問題ない
  })
  if err != nil {
    return err.Error()
  }
  id1 := aws.StringValue(res_ssm1.Parameter.Value)

  // /区切りのパス配下を一括取得
  path := "/" + ENV + "/app" // /dev/app
  res_ssm2, err := svc.GetParametersByPath(&ssm.GetParametersByPathInput{
    Path: aws.String(path),
    Recursive: aws.Bool(true),
    WithDecryption: aws.Bool(true), // 暗号化していない時も指定して問題ない
  })
  if err != nil {
    return err.Error()
  }
  list := res_ssm2.Parameters
  map_ssm2 := map[string]string{}
  for _, rec := range list {
    map_ssm2[aws.StringValue(rec.Name)] = aws.StringValue(rec.Value)
  }
  id2 := map_ssm[path+"/id"] // /dev/app/id"
  pw2 := map_ssm[path+"/pw"] // /dev/app/pw"

}