🍝

CFnテンプレートファイルの依存関係を可視化するツールを公開

に公開

概要

最初はきれいに作ったCloudFormationのテンプレートファイル。
時間が経って新しいリソースを追加したり、別のテンプレートファイルへのリソースの移動が発生したりで、テンプレートファイル間の依存関係がわかりにくくなることってありませんか。
そういう状況になってくるとテンプレートファイルからその依存関係を読み取るのが面倒なので、依存関係をMermaid形式で出力するツールを公開しました。
Exportで出力された値を参照しているImportValueを依存関係として可視化するツールです。

https://github.com/jay34986/cfn-template-dependency-visualization

インストール方法

Python3.12以降でpipxコマンドでインストールできます。

pipx install git+https://github.com/jay34986/cfn-template-dependency-visualization.git

基本的な使い方

cfn-tdvコマンドを実行するとカレントディレクトリに格納されている拡張子が.ymlと.yamlのファイルを解析して依存関係を標準出力に出力します。
解析結果は、以下のようなMermaid形式で標準出力に出力されます。
以下の例は、s3import.yamlのImportValueがs3export.yamlでExportされたMyBucketExportNameを参照していることを表しています。

-dオプションでディレクトリを指定すれば、指定したディレクトリの拡張子が.yaml, .ymlのファイルを対象にできます。

cfn-tdv -d examples/yaml/

-oオプションで結果を出力するファイル名を指定できます。

cfn-tdv -o result.md

循環参照の検出

ImportValueが自身のCFnテンプレートでExportしている値を循環参照している場合は、WARNINGを出力します。
循環参照が複数ある場合は、複数のWARNINGを出力します。

cfn-tdv -d examples/yml
[WARNING] examples/yml/vpc.yml references its own Cfn template's Export(VpcStackSecurityGroup) using Fn::ImportValue or !ImportValue.
[WARNING] examples/yml/vpc.yml references its own Cfn template's Export(VpcStackPublicSubnet) using Fn::ImportValue or !ImportValue.

Discussion