🍵

"cdk synth"で付与されるMetadataを取り除く

2022/09/08に公開

前提

表題のように、CDKで書いたけどDeploy周りはCloudFormation(以下CFn)のスキームで管理したい場合、以下のコマンドでテンプレートを出力する。

cdk synth

CDKをヘビーに使う人はあまり使わない機能だが、

  • CFnテンプレートをGit管理したい
  • 既存テンプレートとマージしたい
  • パイプしてCFn用の静的解析ツールを使いたい

等のユースケースがあるだろう。

ただ上述のコマンドで生成したテンプレートにはところどころMetadataが含まれている。可読性もよくないし、邪魔だ。消すためのTipsを都度ググってるので、この際まとめる。

メタデータなしのCFnテンプレートが欲しい

結論から言うと、このコマンドでMetadataなしのテンプレートを生成できる。

cdk synth --no-version-reporting --no-path-metadata

これでGitの不要なDiffを抑制できたり、おまじない行を一掃できる。
よく使う人はビルド環境に入れたりエイリアス登録しよう。

補足

  • --no-version-reporting
    • 各リソースに付与されるMetadataを取り除くオプション
    • Metadata = CloudFormationの機能

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html

  • --no-path-metadata
    • CFnテンプレートにAWS::CDK::Metadataの形で付与されるリソース(メタデータ)
    • e.g. CDKのモジュール情報

参考

このメタデータの意味って何?が気になる場合は、以下の記事が参考になりそう。
※ネタ元でもあります。感謝:bow:

https://awsbloglink.wordpress.com/2019/05/31/ja-aws-cdk-metadata/

https://dev.classmethod.jp/articles/cdk-practice-6-metadata/

そもそも

これぐらいスッキリしたコマンドなら、改めて調べなくても使いやすい気がする。issueに改善提案してみよう。

cdk synth --no-metadata

Discussion