CloudFormationのResourcesの依存関係を図に出力するスクリプトを書いた

  • 1
    Like
  • 2
    Comment
More than 1 year has passed since last update.

背景

CloudFormationは他のResourcesをRefで参照することができます。このとき、依存関係を整理しながらテンプレートを書いたほうがあとで確認しやすくなると思い、依存関係の確認のためテンプレートから依存関係を図に出力するスクリプトを作成しました。

できること

アプリケーションフレームワーク - AWS CloudFormationのサンプルにあるスケーラブルで耐久性の高い Ruby on Railsのテンプレートから以下のような図が出力出来たりします。

deps.png

使い方

図に変換するためにgraphvizが必要なので、そのインストールと、あとはgistに上げた変換スクリプトを用意します。

$ brew install graphviz
$ wget  https://gist.githubusercontent.com/keqh/3ab1177b0bf68c41a60e34acb06f059e/raw/95a6b28d0ad9bcffdf9c5997352ee0e4f122d1df/generate_dependencies_graph.rb
$ chmod 755 generate_dependencies_graph.rb

あとは適当なテンプレートを用意し、それを引数にスクリプトを実行すると同じディレクトリにdeps.pngができます。あとはこれを開くと上のような図が表示されます。

$ wget https://s3-ap-northeast-1.amazonaws.com/cloudformation-templates-ap-northeast-1/Rails_Multi_AZ.template
$ ./generate_dependencies_graph.rb Rails_Multi_AZ.template
$ open deps.png

やっていること

  1. テンプレートからRefを見つける
  2. Refのうち、参照先がResourcesに無いものを省く
    • Parametersの参照にもRefが使われているため
  3. 集めたRefからgraphvizで図を作るためのdotを作る
  4. dotコマンドでpngをつくる

正直

AWS CloudFormation Designer で十分だよね、という気もしている