AWS Systems Managerのパラメータストアに登録したJSONをシェルから利用する

2021.12.02

データアナリティクス事業本部の鈴木です。

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側の変更でシェルの挙動を変えることができるので便利です。

参考