無料ツール
CloudFormation を図に変換
YAML または JSON の CloudFormation テンプレート、AWS SAM テンプレート、cdk synth の出力を貼り付けると、編集できる AWS 構成図になります。リソースは VPC やサブネットの中のカードになり、Ref、GetAtt、DependsOn は接続線になります。試すだけならアカウントは不要です。
出力例
使い方
テンプレートを貼り付けるかドロップ
デプロイに使う template.yaml や template.json(!Ref や !Sub などの短縮形を含む)、または cdk synth が生成するテンプレートを使えます。コメントや Fn:: の完全形も問題ありません。
スタックを確認
各リソースは AWS サービスごとのカードになります。VPC とサブネットは中で動くものを囲む枠になり、リソース間の参照は接続線になります。
Archboard で開く
新しい図として保存すれば、カードの配置変更、メモの追加、リンクの共有、SVG・PNG へのエクスポートができます。登録は Google か GitHub のアカウントだけで済みます。
CloudFormation テンプレートから描かれるもの
図はテンプレートの Resources セクションと次のプロパティから作られます。
ResourcesTypeResources の各エントリーを、AWS::Lambda::Function や AWS::RDS::DBInstance などの Type ごとのカードとして描きます。イベントソースマッピング、SNS サブスクリプション、セキュリティグループのインバウンドルールなどのつなぎ役の種類は接続線になり、カスタムリソースは汎用カードになります。
!Ref!GetAtt!Subプロパティが Ref、Fn::GetAtt、または Fn::Sub 内の名前で別のリソースを指している箇所に、短縮形でも完全形でも接続線を描きます。Fn::If 内の参照は条件で決まるため、破線になります。
DependsOnDependsOn のエントリーは、1 つのリソース名でもリストでも破線の接続線になります。ただし、同じ 2 つのリソースがすでに参照でつながっている場合は破線を重ねません。AWS::EC2::VPCGatewayAttachment のように描かれないリソースを指す DependsOn は、何も描きません。
VpcIdSubnetIdVPC はサブネットを含む枠になり、VpcId、SubnetId、SubnetIds、VpcConfig で配置されたリソースは、そのサブネットの中に、複数のサブネットにまたがる場合は VPC の枠に入ります。
EventsConnectorsSAM の関数イベントを接続線として描きます。POST /orders のようなラベルの付いた API ルート、または関数を起動するキュー、バケット、ストリーム、ルールからの線です。スケジュールはトリガーカードになり、Connectors は Read または Write の接続線になります。
aws:cdk:pathcdk synth の出力では、生成された論理 ID の代わりに aws:cdk:path から読みやすい名前がカードに付きます。2 つ以上のリソースを持つコンストラクトは枠になり、CDKMetadata と CDK 自身の補助リソースは表示しません。
AWS::CloudFormation::Stackネストされたスタックを 1 枚のカードとして描き、パラメーターとして渡すリソースからの線と、その出力を読むリソースへの線でつなぎます。
AWS SAM テンプレート
Transform: AWS::Serverless-2016-10-31 を含むテンプレートは、sam build を実行せずに書かれたとおりに読み取ります。関数、API、HTTP API、シンプルテーブル、ステートマシン、ネストされたアプリケーションはそれぞれのカードになり、SAM が関数イベントから作成する API もカードとして表示され、Policies で参照されているリソースは関数とつながります。Globals は共通設定だけなので描きません。
CloudFormation の構成図に含まれないもの
- パラメーターの値と既定値、Mappings、Outputs、Conditions の評価結果。条件によってスキップされるリソースも含めてすべてのリソースを描き、プロパティの値は表示しません。
- ネストされたスタックや SAM アプリケーションの中のリソース。TemplateURL や Location で指定された子テンプレートは取得しません。Fn::ImportValue で他のスタックから取り込む値は件数だけを数え、描きません。
- SAM 以外のマクロやトランスフォーム、Fn::ForEach のループ。何も展開しないため、ForEach のループは 1 枚のプレースホルダーカードになります。
- スタックの状態、ドリフト、コスト、実行時にどのサービスがどのサービスを呼び出しているか。図が表すのはテンプレートがリソースをどうつないでいるかで、実際のトラフィックではありません。
CloudFormation の構成図についての質問
YAML と JSON のテンプレートの両方を読み取れますか?
はい。!Ref、!GetAtt、!Sub などの短縮形を使った YAML テンプレートも、同じ内容を Fn:: のキーで書いたテンプレートも、その JSON 版も、同じ図になります。コメントや AWSTemplateFormatVersion の行も問題ありません。
AWS SAM テンプレートを可視化できますか?
はい。sam build や sam deploy の前の template.yaml をそのまま貼り付けてください。各関数のイベントは API、キュー、バケット、ストリーム、スケジュールからの接続線になり、Connectors は Read または Write の接続線に、暗黙の API は専用のカードになります。
AWS CDK のアプリを可視化するには?
cdk synth を実行して出力されたテンプレートを貼り付けるか、cdk.out フォルダーにあるスタック名のファイル(MyStack.template.json など)をドロップしてください。カードの名前はコンストラクトのパスから付き、大きなコンストラクトは枠になり、CDK のメタデータは表示しません。TypeScript や Python などで書かれた CDK のコード自体は読み取りません。
ネストされたスタックはどうなりますか?
AWS::CloudFormation::Stack のリソースはそれぞれ 1 枚のカードになり、パラメーターとして受け取るリソースと、その出力を Fn::GetAtt で読むリソースにつながります。子テンプレートは取得しないため、中身を見るにはそのテンプレートを別に貼り付けてください。
図を Archboard で開くとどうなりますか?
このページのプレビューは保存されません。「Archboard で開く」を選ぶと、表示されている図(カード、枠、名前、接続線)がワークスペースに新しい図として保存され、配置の変更、注釈の追加、共有、エクスポートができます。あくまで出発点なので、後からテンプレートを変更しても図は更新されません。
CloudFormation の可視化ツールは無料ですか?
はい。テンプレートを貼り付けて図を見るだけならアカウントは不要です。Archboard で開くには無料アカウントが必要です。