tjinjin's blog

さらなる高みに1nmずつ近づくブログ

ssm parameter storeを簡単に弄れるツールを作った

About

最近周りでツールリリースラッシュが続いてたので、とりあえず動くようになったのでリリースしました。

github.com

ssm-editとは

Go で s3-edit という CLI アプリケーションを作った | tsub's blog

このツールに触発されて作った自分のエディターを使ってssm paremter storeを弄れるツールです。go製です。

作った経緯

現職だとアプリケーションの環境変数だったり、slack botの設定値だったりをparameter storeに入れています。なので、結構な頻度で修正する機会がありライトに弄るためのツールが欲しいなと思ってたので作りました。一括登録ツールはありますが、都度の編集が大変だったのでちょっと弄るときの利用を想定しています。(というか私が使いたかった)

事前設定

インストール

まだ雑にしか用意してないですが、releaseページにバイナリがあるのでそれが楽です。

事前設定

README.mdに書いて無いですが、~/.aws/credentialsの設定値を見ています。source_profileにも対応しています。サンプルの設定を置いておきます。

[default]
aws_access_key_id = hogehoge
aws_secret_access_key = fugafuga

[test]
role_arn = arn:aws:iam::123456789012:root
source_profile = default

使い方

4つのサブコマンド(実質2つ)が用意されています。

$ ssm-edit help
$ ssm-edit version
$ ssm-edit list
$ ssm-edit edit

グローバルオプションとして--region--profileの指定が可能です(AWS CLIと似たような感じです)。optionを渡さないとそれぞれap-northeast-1defaultが設定されます。

list

parameter storeの情報を一覧で取得できます。 pagenationがある場合は追随するようになっています。

$ ssm-edit
Name: test Type: String
Name: test2 Type: SecureString
Name: test3 Type: StringList

edit

このツールのキモですが、指定したパラメータの値を取得しEDITOR上で編集ができます。

--nameで編集したいparameterを指定します。

$ ssm-edit edit --name test

実行すると、私の環境だとvimが開かれます。

{
  "Parameter": {
    "Name": "test",
    "Type": "String",
    "Value": "123"
  }
}

ここでValueを変更すると、その値がparameter storeに反映されるという仕組みです。

edit周りはまだ対応が荒くて、Value以外の編集も可能になっています。したがって既存の値をコピーしたい場合、Nameをtest2として編集を終了すると新しいparameterが作成されたりします。意外に便利な気がするので、あんまり制限しないでおこうかなーと思っています。

ただ注意点があって、SecureStringの対応ができていないので暗号化された状態の値しか見れません。もともとStringとなっているTypeをSecureStringにしてしまうと値が暗号化されてしまいました。

今後

まだ雑な感じなので、ちょこちょこ気になるところは引き続き修正していきたいと思います!

久々にツール書けて楽しかったのが今回一番よかったです(๑•̀ㅂ•́)و✧