Lapis Lazuli

technical blog for web developer

【AWS】パラメータストアを使いこなす

SSMにはインスタンスを管理する他にパラメータを管理するパラメータストアがあります。
Fargateとか使用するのだったらほぼ必須となってくると思いますが・・・
最近EC2で使用する機会があったので今回はパラメータストアについて書きます。

パラメータストアに値を設定する

コンソールから設定してもいいのですが、awscliを使えばサクッと設定出来ますのでその方法を。
まず、書き込む為にActionにPutParameterをポリシーを付与してあげます。

"Action": [
"ssm:PutParameter",
"ssm:GetParameters",
"ssm:GetParameter",
"ssm:DeleteParameters"
],

読み込みしたり削除したりしたい場合は適宜上記を付与してあげれば大丈夫です。
Getが2つありますが、複数形のほうは複数のパラメータを指定できるのが違いです。

では早速パラメータをセットしてみましょう。
下記のコマンドを実行すれば完了です。

$ aws ssm put-parameter --name "hogehoge" --value "hogehoge" --type "String"

文字列で入れたい場合はtypeをStringにしておけば大丈夫です。
(私が使ってきた限りでは)ほぼこれしか使いませんが、パスワードなど平文だとセキュリティ的にマズい場合があると思います。
その時はtypeをSecureStringにすると暗号化して保存してくれます。めちゃくちゃ使いやすくて便利。

パラメータストアから値を取得する

保存した値を取得するのは上記のポリシーで設定したgeparameterを使います。

$ aws ssm get-parameter --name "hogehoge"

nameを指定するだけで取得できます。複数取りたい場合はparametersを。

$ aws ssm get-parameters --name "hogehoge" "hogehoge2"

簡単に取得できますね。
アプリケーションから取る場合は各SDKを使えば同じ感じで取れます。

一気に取りたい時

上記のようにnameを1つひとつ指定しても取る事が出来ますが、パラメータが多い場合、とても面倒だと思います。
そういう時の為に、get-parameters-by-pathというコマンドが存在します。
これはnameをパスで保存してあげると、そのパス配下のパラメータを全て持ってこられるという便利なものです。
例えば

$ aws ssm put-parameter --name "/hoge/fuga" --value "hogehoge" --type "String"

というように保存してあげます。すると

$ aws ssm get-parameters-by-path --name "/hoge"

パスを指定してあげると、その配下のパラメータを全部取って来られます。もちろん複数階層にも設定出来るので細かく制御が出来ます。

おわりに

今回はSSMパラメータストアの基本的な使い方を書きました。
次回は実際に各サービスで使う具体例を書きたいと思います。

それでは。