Sionの技術ブログ

SREとして日々の学習を書いて行きます。twitterは@sion_cojp

tomlファイルをParameterStoreからdecodeするtomlssmを作った

github.com

GitHub - suzuken/yamlssm と同様にtomlでも出来るようにしました。

やってることは

  • AWS System Managerで、Parameter Storeでを設定する(例えばxxxという名前でsecure stringで設定します)
  • "ssm://xxxx" と書いてると、toml読み込み時にxxxの部分をdecodeする

使い方はREADMEにも書いてますが、下記のように使います

1. decode

package main

import (
    "fmt"
    toml "github.com/sioncojp/tomlssm"
)

type Config struct {
    User     string `toml:"username"`
    Password string `toml:"password"`
}

func LoadToml(c string) (*Config, error) {
    var config Config
    if _, err := toml.Decode(c, &config, "ap-northeast-1"); err != nil {
        return nil, err
    }
    return &config, nil
}

func main() {
    conf, err := LoadToml(`
username = "test"
password = "ssm://password"
`)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(conf)
}

2. tomlファイルを指定する

# config.toml
username = "test"
password = "ssm://password"
package main

import (
    "fmt"
    toml "github.com/sioncojp/tomlssm"
)

type Config struct {
    User     string `toml:"username"`
    Password string `toml:"password"`
}

func LoadToml(c string) (*Config, error) {
    var config Config
    if _, err := toml.DecodeFile(c, &config, "ap-northeast-1"); err != nil {
        return nil, err
    }
    return &config, nil
}

func main() {
    conf, err := LoadToml("config.toml")
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(conf)
}