「手動で更新している構成図が、コードの実装と乖離してしまう」
このような悩みは、AWSインフラを管理するエンジニアなら誰でも一度は経験します。構成図を毎回PowerPointやVisioで手動更新していると、インフラ変更のたびに図の更新が後回しになり、気づいたときには実態と大きくずれていた——という状況になりがちです。
この記事では、RHEL 9系~Ubuntu 24.04 LTSを想定環境として、AWSアーキテクチャ図ツールの選び方と、IaC(Infrastructure as Code)のコードから構成図を自動生成する手順を解説します。GUIでドラッグ&ドロップするDraw.ioの活用法から、Pythonコード一本で構成図を出力するDiagramsライブラリ、CDKプロジェクトに組み込むcdk-diaまで、設計の可視化を「コードで管理」する実践的な手順を紹介します。
この記事のポイント
・AWSアーキテクチャ図ツールはDraw.io(GUI)・Diagrams(Python)・cdk-diaの3つが主流
・DiagramsはPip1コマンドで導入し、Pythonコードでマルチ構成図を自動生成できる
・cdk-diaはCDKスタックからVPC/ELB/EC2の関係図を自動出力し、設計書との乖離を防ぐ
・ツール選定は「使うIaCツール」と「図の目的(説明用 vs 仕様書)」で決まる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
AWSアーキテクチャ図を「コードで管理」すべき理由
構成図を手動で作成・更新する最大の問題は、「ドキュメントが実装から離れていく」ことです。Terraformで新しいサブネットを追加しても、PowerPointの構成図は誰かが手動で直さない限り古いままになります。この問題を根本から解消するのが「Diagram as Code」の考え方です。Diagram as Codeとは、アーキテクチャ図自体をコードで定義し、IaCコードと同じリポジトリで管理するアプローチです。インフラの変更にあわせて構成図コードも更新し、CIパイプラインの中で自動的に画像を再生成することで、常に最新の構成図を維持できます。
・ドキュメントと実装が一致する:コードが変われば図も変わる設計にできる
・レビュー可能:構成図の変更をGitのdiffで確認できる
・チームで共有しやすい:専用ライセンスなしで誰でも再生成できる
主要なAWSアーキテクチャ図ツール比較
まず代表的なツールを整理します。大きく「GUI操作型」と「コード生成型」の2系統に分かれます。| ツール | 方式 | 対応IaC | コスト | 向いている用途 |
|---|---|---|---|---|
| Draw.io(Diagrams.net) | GUI手動 | なし | 無料 | 提案書・説明資料の作成 |
| Lucidchart | GUI手動 | なし | 有料(無料枠あり) | チームでの共同編集 |
| AWS Application Composer | GUI+コード連動 | CloudFormation・SAM | 無料 | CFn/SAMテンプレートの可視化 |
| Diagrams(Python) | Pythonコード | 汎用(手書きコード) | 無料 | CI/CDに組み込む自動生成 |
| cdk-dia | CDKコード自動解析 | AWS CDK | 無料 | CDKプロジェクトのドキュメント化 |
| cfn-diagram | CFnテンプレート自動解析 | CloudFormation | 無料 | 既存CFnスタックの可視化 |
GUI型はデザインの自由度が高い一方、更新の手間がかかります。コード生成型はIaCコードと連動させることで「常に最新」の構成図を維持できます。次のセクションから、それぞれの手順を具体的に見ていきましょう。AWSをLinux環境から構築する際の基礎についてはAmazon LinuxでAWSサーバーを構築する入門手順も参照してください。
Draw.ioでAWSアーキテクチャ図を作成する手順
Draw.io(Diagrams.net)はブラウザ上で動作する無料の作図ツールです。AWS公式アイコンセットを組み込んでいるため、VPC・EC2・ALB・RDSといったコンポーネントを正確な見た目で配置できます。1. AWSアイコンライブラリを有効化する
ブラウザでhttps://app.diagrams.net を開き、新規ダイアグラムを作成します。画面左側の「+」ボタンをクリックして「Shape Libraries」を開き、「Networking」カテゴリの中にある「AWS」を有効化します(AWS19・AWS4の両方が選択可能です)。有効化後、左のパネルにAWSアイコンが一覧表示されます。VPC、Subnet、EC2 Instance、Application Load Balancer、RDS、Security Groupなど、主要なコンポーネントをドラッグ&ドロップで配置できます。
2. VPC・サブネット・EC2・ALBを配置して構成図を完成させる
マルチAZ構成を描く場合の手順例を示します(実際の操作は環境により異なります)。・VPCを表すグループ枠を配置し、その中に「Public Subnet(AZ-a)」と「Public Subnet(AZ-c)」の2つのサブネットグループを並べる
・各サブネットにEC2インスタンスアイコンを1台ずつ配置する
・サブネットの外(インターネット境界)にApplication Load Balancerを置き、各EC2へ矢印で接続する
・「Private Subnet」グループを2つ追加し、RDS Primary・RDS Standbyを配置して双方向の複製矢印を引く
ラベルをダブルクリックして編集することで、IPアドレス帯域やリソース名を書き込めます。
3. .drawioファイルをGitで管理してチームと共有する
Draw.ioのファイルは内部的にXML形式です。「File > Save」で 拡張子で保存し、インフラのコードリポジトリの ディレクトリ等に配置してGitで管理します。# リポジトリへの追加例 git add docs/aws-architecture.drawio git commit -m "docs: マルチAZ構成図を追加" git push
DiagramsライブラリでPythonコードからAWSアーキテクチャ図を自動生成する
Diagrams(https://diagrams.mingrammer.com/)はPythonコードでクラウドアーキテクチャ図を生成するOSSライブラリです。AWSをはじめGoogle Cloud・Azureのアイコンセットを内包しており、コードを実行するたびに最新の構成図PNG画像を出力できます。1. DiagramsとGraphvizをインストールする
DiagramsはGraphvizを内部で使用するため、Graphvizのバイナリが必要です。RHEL 9系(Rocky Linux / AlmaLinuxを含む)の場合:
# Graphvizのインストール sudo dnf install graphviz -y # Diagramsライブラリのインストール pip3 install diagrams
# Graphvizのインストール sudo apt install graphviz -y # Diagramsライブラリのインストール pip3 install diagrams
pip3 show diagrams # 出力例(環境により異なります) Name: diagrams Version: 0.23.4 Summary: Diagram as Code Location: /usr/local/lib/python3.11/site-packages
2. 基本的なAWS構成図のPythonコード例
以下はALB・EC2・RDSを含む基本的な構成図を生成するコード例です。# aws_basic.py from diagrams import Diagram, Cluster from diagrams.aws.compute import EC2 from diagrams.aws.network import ELB from diagrams.aws.database import RDS with Diagram("AWS Basic Architecture", show=False, filename="aws_basic"): with Cluster("VPC (10.0.0.0/16)"): alb = ELB("ALB") with Cluster("Private Subnet"): ec2 = EC2("EC2 (t3.medium)") with Cluster("DB Subnet Group"): rds = RDS("RDS MySQL") alb >> ec2 >> rds
python3 aws_basic.py # 実行後、カレントディレクトリに以下が生成されます(出力例) ls aws_basic.png aws_basic.png
3. マルチAZ冗長構成図のコード例
AZ-a・AZ-cへの冗長配置とRDSのプライマリ・スタンバイ構成を表したコード例です。# aws_multi_az.py from diagrams import Diagram, Cluster, Edge from diagrams.aws.compute import EC2 from diagrams.aws.network import ELB from diagrams.aws.database import RDS with Diagram("Multi-AZ Architecture", show=False, direction="TB", filename="aws_multi_az"): alb = ELB("ALB") with Cluster("VPC (10.0.0.0/16)"): with Cluster("ap-northeast-1a"): with Cluster("Public Subnet"): ec2_a = EC2("EC2-a") with Cluster("ap-northeast-1c"): with Cluster("Public Subnet"): ec2_c = EC2("EC2-c") with Cluster("DB Subnet Group"): rds_primary = RDS("RDS Primary") rds_standby = RDS("RDS Standby") alb >> [ec2_a, ec2_c] ec2_a >> rds_primary rds_primary - Edge(style="dashed", label="同期レプリカ") - rds_standby
direction="TB"(top to bottom)を指定することで縦方向のレイアウトになり、AZを左右に並べた構成図が生成されます。cdk-diaでCDKコードからアーキテクチャ図を自動出力する
AWS CDKでインフラを管理しているプロジェクトであれば、cdk-diaを使うことでCDKスタックのコードから自動的にアーキテクチャ図を生成できます。Diagramsライブラリのような「手書きコード」が不要で、既存のCDKコードをそのまま活用できる点が大きな利点です。1. cdk-diaをインストールしてCDKスタックを合成する
cdk-diaはnpmパッケージとして提供されています。# cdk-diaのグローバルインストール npm install -g cdk-dia # バージョン確認(出力例) cdk-dia --version # 0.10.0 # まずCDKスタックを合成してcloudformation-*.jsonを生成する cdk synth
cdk synthを実行すると cdk.out/ ディレクトリにCloudFormationテンプレートのJSONファイルが生成されます。cdk-diaはこのファイルを読み込んで構成図を作成します。2. 構成図ファイルを生成してCI/CDに組み込む
# cdk-diaで構成図を生成 cdk-dia # 出力例(環境により異なります) Processing stack: MyAppStack Writing diagram to diagram.png ls diagram.png diagram.png
diagram.png にはVPC・サブネット・EC2・ALB・IAMロールなどの関係が自動的に描画されます。GitHub Actionsなどのパイプラインでは以下のように組み込めます(コード例):# .github/workflows/diagram.yml の一部(コード例) - name: Generate architecture diagram run: | npm install -g cdk-dia cdk synth cdk-dia git add diagram.png git commit -m "docs: アーキテクチャ図を自動更新" || true
「dot: command not found」などよくあるエラーと対処法
【エラー1】ExecutableNotFound: failed to execute dot, make sure Graphviz executables are on your systems' PATH
DiagramsライブラリはGraphvizのdot コマンドを内部で呼び出します。このエラーはGraphvizのインストールが不足しているか、PATHが通っていない場合に発生します。対処法:
# RHEL系 sudo dnf install graphviz -y # Ubuntu系 sudo apt install graphviz -y # インストール後の確認 dot -V # 出力例: dot - graphviz version 2.43.0 (0)
【エラー2】cdk-diaを実行しても diagram.png が空白になる
cdk-diaはcdk.out/ ディレクトリのCloudFormationテンプレートを読み込みます。cdk synthを先に実行せずにcdk-diaを実行すると、空のテンプレートを参照して空白の図が生成されます。対処法: 必ず
cdk synth の後に cdk-dia を実行します。# 正しい順序 cdk synth && cdk-dia
【エラー3】Diagramsの from diagrams.aws.xxx import YYY でModuleNotFoundError
Diagramsライブラリがインストールされていない、またはpip3とPythonのバージョンが異なる場合に発生します。# 現在のPython実行環境を確認 python3 -m pip show diagrams # Not installedと出た場合 python3 -m pip install diagrams
本記事のまとめ
AWSアーキテクチャ図ツールの選び方と、IaCコードからの自動生成手順を解説しました。最後に各ツールの使い分けをまとめます。| やりたいこと | 推奨ツール | メモ |
|---|---|---|
| 提案書・説明資料向けの見栄えのよい構成図 | Draw.io | 無料・ブラウザのみで完結 |
| CFn/SAMテンプレートをそのまま可視化 | AWS Application Composer | AWSコンソールで操作可 |
| 任意の構成をコードで定義してCI出力 | Diagrams(Python) | pip install diagrams で導入 |
| CDKプロジェクトのドキュメント化・自動更新 | cdk-dia | cdk synth後に実行 |
| 既存CloudFormationスタックを可視化 | cfn-diagram | pip install cfn-diagram で導入 |
「とにかく今すぐきれいな構成図を作りたい」場合はDraw.ioが最速です。「IaCコードと構成図を常に同期させたい」場合は、使っているIaCツールにあわせてDiagramsかcdk-diaを選ぶと、設計書の陳腐化を防ぐ仕組みが作れます。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:AWSアーキテクチャ図をLucidchartで設計する実践手順|マルチAZ冗長構成テンプレート
- この記事の属するカテゴリ:AWS(Amazon Linux)へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます