TL;DR
- Metadata Attributeを使う
- 詳細は AWS DevOps Blog を参照
書き方
AWS DevOps Blogのサンプルそのまま。
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-metadata.html
{
"Description" : "This is a sample template.",
"Resources" : {
"Bucket98004" : {
"Type" : "AWS::S3::Bucket",
"Metadata" : {
"Comment" : "ここにコメントを書く。",
"Version" : "1.2.1_1"
...
}
解説
AWS DevOps Blogに書いてあることの要約。
- CFn はすべてのResourceで
Metadata
attributeをサポートしている -
Metadata
Attribute には任意のオブジェクトを含めることができる- ので、
Comment
といった独自オブジェクトを記載できるらしい
- ので、
- とはいえ、
AWS::CloudFormation::Interface
といったオブジェクトもあるようなので、AWS
で始まるオブジェクトは避けたほうが良さそう。
背景
AWS CloudFormationはJSONとYAMLの2形式で記述できるが、YAMLと違い、JSONにはコメントを記述することができない。
自分でゼロから書くのであればYAMLを使えばいいが、既存のCFnテンプレート、パラメータにはJSONで書かれたものが多い。
YAMLへ変換するとオリジナルのJSONが更新されたときに面倒なのでJSONのまま使いたいが、何が書いてあるのか分からなくなるのでコメントは追記したい。
バッドノウハウ(?)として、今後使われないと思われるKeyを使って
"Comment": "This is comment hogehoge."
のように書く手法があると思うけど、将来(?)CFnの予約語と衝突するリスクは避けたい。
CFnのJSONに安全にコメントを書けるような日本語記事が無かったので書いてみた。