この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
データアナリティクス事業本部の鈴木です。
AWS Systems Manager Parameter Store(以降、パラメータストア)にJSONを登録し、シェルスクリプトから参照する例を紹介します。
やりたいこと
パラメータストアにJSONを登録し、シェルスクリプトから参照します。
シェルスクリプトで使用する情報の登録先をパラメータストアにしておくことで、パラメータストアの様々な恩恵を享受することができます。その中でも今回は、同じ名前のパラメータを参照していても、登録する値を変えるとシェルから利用する値を変更できることに注目します。パラメータにはJSONも文字列として登録できるため、1つの名前に対してまとまった情報を登録することが可能です。
なお、パラメータストアを利用する際には、以下に注意が必要です(2021/12月時点)。
- 標準パラメータの最大サイズは4KBです。
- デフォルトの最大スループットは40TPSです。
これらの制限はアドバンスドパラメータとスループットの上限増加で引き上げることが可能です。
AWS CLIでパラメータストアからパラメータを取得する方法
AWS CLIではget-parameterコマンドでパラメータストアから値を取得することができます。
ドキュメントによると、以下のように値を取得することができます。
コマンド
aws ssm get-parameter \
--name "MyStringParameter"
レスポンス
{
"Parameter": {
"Name": "MyStringParameter",
"Type": "String",
"Value": "Veni",
"Version": 1,
"LastModifiedDate": 1530018761.888,
"ARN": "arn:aws:ssm:us-east-2:111222333444:parameter/MyStringParameter"
"DataType": "text"
}
}
やってみる
1. パラメータを作成する
/cm-nayuts/key
という名前で{"json_key":"json_value"}
という文字列を登録しておきます。
2. シェルから値を参照する
登録したパラメータを、シェルスクリプトから利用してみましょう。 今回は以下のようなスクリプトを使いました。
sample.sh
#!/bin/bash
# パラメータストアから値を取得する。
json_value=`aws ssm get-parameter --name /cm-nayuts/key | jq -r .Parameter.Value | jq .json_key`
# 取得した値を表示する。
echo $json_value
登録したJSONは文字列になっているので、jq
でレスポンスをパースした後、さらにjq
に渡すことでパースし、json_key
キーの値を取り出します。
結果は以下のようになります。
./sample.sh
# "json_value"
最後に
今回は、パラメータストアにJSONを登録し、シェルなどからAWS CLIを使って利用する例をご紹介しました。
シェルがパラメータストアに登録したパラメータを参照するように作っておけば、シェルやその設定ファイルなどに手を入れなくても、AWS側の変更でシェルの挙動を変えることができるので便利です。