📌

Amazon Q Developer CLI x Diagram MCPでAWS構成図を作ってみた:CDK Graphと比べてどう?

に公開

はじめに

AWSのアーキテクチャ図は機能追加時に部分的に作って説明するにはいいんですが、全体を作ってメンテとなると面倒になって疎かになってしまうことが多々あります。
AWSのアーキテクチャ図生成をCI/CDに組み込み、図をメンテすることから解放される夢をたまにみるのですが、MCPでの画像生成や公式ツールもあるので割と現実的になってきたのではないかなと。
そこで、ツールがどの程度表現力のあるアーキテクチャ図を書けるのか、AWS Diagram MCP ServerやCDK graphを使ってみて検証してみたいと思います。

検証ツールの概要

Amazon Q Developer CLI とは

Amazon Q Developer CLIとは、ターミナルから自然言語で対話可能なAIエージェントです。
MCP(Model Context Protocol)連携をサポートしており、さまざまなMCPサーバーを
活用することができます。Builder IDでの無料版も提供されているので、
気軽に試すことができます。ただし、AWSアカウントのリソースにアクセスする
高度な機能を使う場合は、Pro版(月額$19)が必要になります。

AWS Diagram MCP Server とは

AWS Diagram MCP ServerはAWSが提供するAWSアーキテクチャ図を作成するためのMCPサーバです。

CDKコードからAWSアーキテクチャ図を生成したり、シーケンス図、フロー図、クラス図などを生成できます。
成果物のカスタマイズもサポートしているので、図の外観やレイアウト・スタイルなどを用途に合わせて変更できます。

CDK Graph とは

CDK GraphはAWS PDK(Project Development Kit)のサブモジュールで、CDKコードに埋め込むことでAWSアーキテクチャ図を生成することができます。

検証環境のセットアップ

Amazon Q Developer CLI x AWS Diagram MCP Server のセットアップ

Amazon Q Developer CLIにAWS Core MCPサーバを設定するを参考にdev-toolsロールを有効にしてください。

Amazon Q Developer CLIのセットアップ方法については、
Amazon Q Developer CLIにAWS Core MCPサーバを設定するを参照してください。
特にdev-toolsロールを有効にする必要があります。

※本記事の検証は無料版(Builder ID)で実施可能です。

CDK Graph のセットアップ

typescriptの場合はCDKのプロジェクトルートでnpmコマンドを使ってインストールしてください。

npm i @aws/pdk

npm以外のパッケージマネージャ、もしくはtypescript以外は公式サイトの説明を参照してください。

検証用サンプルアーキテクチャ

検証用サンプルアーキテクチャの概要

VPC-AとVPC-Bの2つのVPCを用意し、以下の構成で検証します:

  • VPC-A(10.0.0.0/16):クライアント用VPCでEC2インスタンスを配置
  • VPC-B(10.1.0.0/16):データベース用VPCでAurora PostgreSQLとRDS Proxyを配置
  • 2つのVPCはVPC Peeringで接続
  • EC2からRDS Proxyを経由してAuroraに接続する構成

この構成を選んだ理由は、VPCのグループ表現やネットワーク接続の
可読性を評価するのに適しているためです。

CDKの実装サンプルはGitHubにおいてあります。

### VPC-A(左側)
┌─ VPC-A (10.0.0.0/16) ─┐
│ Client VPC             │
│ ┌─ Private Subnets ─┐  │
│ │ EC2 Instance      │  │
│ │ (t3.micro)        │  │
│ │ Amazon Linux 2    │  │
│ └───────────────────┘  │
└────────────────────────┘


### 中央接続
VPC Peering Connection
(10.0.0.0/16 ↔ 10.1.0.0/16)


### VPC-B(右側)
┌─ VPC-B (10.1.0.0/16) ─────────────┐
│ Database VPC                       │
│ ┌─ Private Subnets ─────────────┐  │
│ │ RDS Proxy (PostgreSQL:5432)  │  │
│ │                               │  │
│ │ ┌─ Aurora Cluster ─────────┐  │  │
│ │ │ Writer (t3.medium)       │  │  │
│ │ │ Reader (t3.medium)       │  │  │
│ │ └─────────────────────────┘  │  │
│ └───────────────────────────────┘  │
│                                    │
│ ┌─ Security & Access ─────────┐    │
│ │ Secrets Manager             │    │
│ │ IAM Role                    │    │
│ └─────────────────────────────┘    │
└────────────────────────────────────┘


### 接続フロー
• EC2 → VPC Peering → RDS Proxy → Aurora Writer/Reader
• IAM Role → Secrets Manager

検証

CDK Graphを使ったAWSアーキテクチャ図生成

  1. appやstackが初期化されているあたりで、CdkGraphを初期化する

https://github.com/shikira/aws-lab/blob/main/graph/rds-proxy-vpc/bin/rds-proxy-vpc.ts#L27-L29

  1. cdk synthを実行する
      cdk.out/cdkgraph/diagram.pngが生成される

成果物を確認すると、確かに図は生成されている。
VPCの表現がグループじゃなくてサービスアイコンになっているので、可読性は低いと言わざるを得ない。

Amazon Q Developer CLI x AWS Diagram MCP Serverを使ったAWSアーキテクチャ図生成

Q CLIで以下のプロンプトを入力します:

/path/to/your/repositoryのCDKコードからAWS構成図を生成してください

※実際のパスに置き換えてください

すると、リポジトリパス/generated-diagrams/diagram_xxxxxxx.pngが生成されます。
今回のシンプルなプロンプトで以下の図を生成することができました。
VPCやSubnetはグループで記載され、VPC間をPeeringで接続していることがわかります。
また、RDS Proxy経由でWriter/Readerインスタンスに接続しています。
図もわかりやすくてとても良い感じです。

ただ、私は横に広がる図が好きなので、一言カスタムを追加しました。

> "リポジトリパス"のcdkから図を書いてください。横長の図にしてください。

たったこれだけでいい感じに横に広がる図に変わってくれました。

まとめ

CDK GraphとAmazon Q Developer CLI x AWS Diagram MCP Serverで
それぞれAWSアーキテクチャ図を生成し、以下の点で比較しました:

表現力

  • CDK Graph: VPCがサービスアイコンとして表現され、
    ネットワーク構造が分かりにくい
  • AWS Diagram MCP Server: VPCやSubnetがグループとして表現され、
    ネットワーク階層が直感的に理解できる

カスタマイズ性

  • CDK Graph: コード修正が必要
  • AWS Diagram MCP Server: 自然言語のプロンプトで簡単にカスタマイズ可能
    (例:「横長の図にしてください」だけで対応)

セットアップの容易さ

  • CDK Graph: npm installとコード数行の追加で完了
  • AWS Diagram MCP Server: Amazon Q CLIとMCPサーバーの設定が必要

推奨用途

  • CDK Graph: シンプルな構成で、CI/CDに組み込んで自動生成したい場合
  • AWS Diagram MCP Server: 複雑な構成を分かりやすく表現したい場合

今回はシンプルな構成での検証でしたが、大規模な構成でもプロンプトのカスタマイズ次第で抽象度を調整できそうです。
今後、マイクロサービスアーキテクチャなど、より複雑な構成での検証も行いたいと思います。

Discussion