[小ネタ]JSONを展開してCloudFormationスタックのパラメータを指定するワンライナーを生成する

AWS CLIからCloudformationのパラメータを指定する文字列をJSONから生成しました。
2022.08.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

CloudFormation スタックの作成、更新時をCLIから行う場合スタックらパラメータは以下のような形式で指定する必要があります。

ParameterKey=Param1,ParameterValue=value1 \
ParameterKey=Param2,ParameterValue=value12 \

本質的にはタプルのリスト程度しか情報が無いのにタイプ数が多くてうんざります。

JSONファイルとjqを使って生成する

そこで以下のようなJSONファイルを用意します。

{
  "Param1": "value1",
  "Param2": "value12"
}

そしてjqにパイプします。

cat params.json | jq -r '. | to_entries | map("ParameterKey=" + .key + ",ParameterValue=" + (.value | tostring) + " \\\\" ) | .[]'

まとめ

JSONファイルの内容を工夫して設定をルートではなくて環境毎の別のキー以下に置いてみたり、yamlを使ってみたりもできると思います。