
AWS Diagram MCP Server を使うと Diagrams を使ってアーキテクチャ図を生成できる🎨
今回は VS Code + Cline を使う(セットアップなどは割愛).
Terraform コードからアーキテクチャ図を生成しよう
Zenn Book「LocalStack 実践入門 | AWS x Terraform 入門ワークショップ」に載せているアーキテクチャ図はすべて Diagrams を使っている👌 AWS Diagram MCP Server を使って Terraform コードからアーキテクチャ図を生成して比較してみようと思う \( 'ω')/
👾 chapter05/main.tf
お手本(僕が作ったアーキテクチャ図)

chapter05/main.tf
resource "aws_s3_bucket" "chapter05" { bucket = "chapter05-bucket" } resource "aws_s3_bucket_notification" "chapter05" { bucket = aws_s3_bucket.chapter05.id lambda_function { lambda_function_arn = aws_lambda_function.chapter05.arn events = ["s3:ObjectCreated:*"] } } data "aws_iam_policy_document" "assume_role" { statement { effect = "Allow" principals { type = "Service" identifiers = ["lambda.amazonaws.com"] } actions = ["sts:AssumeRole"] } } resource "aws_iam_role" "lambda_execution_role" { name = "chapter05-role" assume_role_policy = data.aws_iam_policy_document.assume_role.json } data "archive_file" "chapter05" { type = "zip" source_dir = "${path.module}/function/src" output_path = "${path.module}/function/dist/chapter05.zip" } resource "aws_lambda_function" "chapter05" { function_name = "chapter05-function" handler = "app.lambda_handler" runtime = "python3.12" role = aws_iam_role.lambda_execution_role.arn filename = "${path.module}/function/dist/chapter05.zip" source_code_hash = data.archive_file.chapter05.output_base64sha256 } resource "aws_lambda_permission" "chapter05" { action = "lambda:InvokeFunction" function_name = aws_lambda_function.chapter05.arn principal = "s3.amazonaws.com" source_arn = aws_s3_bucket.chapter05.arn }
初期プロンプト
chapter05/main.tf を参考にアーキテクチャ図を作成して!
Cline 実行(Plan → Act)1回目
- API Provider: VS Code LM API
- Language Model: copilot - claude-3.5-sonnet

Terraform コードからアーキテクチャ図を生成できた❗️

Cline 実行(Plan → Act)2回目
リソース間の関係性として間違ってはいないけど,個人的に AWS Lambda 関数と IAM Role は矢印ではなく線で表現したく,位置関係も AWS Lambda 関数の右側にあるとイイな〜と思ってプロンプトを拡張して再実行する.
chapter05/main.tf を参考にアーキテクチャ図を作成して! AWS Lambda 関数と IAM Role は矢印ではなく線にしましょう(Diagrams では `-` で表現できるよ) IAM Role は AWS Lambda 関数の右側に配置しましょう
すると期待通りにアーキテクチャ図を改善できた❗️s3:ObjectCreated:* というトリガー条件も記載されていて,お手本(僕が作ったアーキテクチャ図)よりもイイ感じに見える👌 AWS S3 という表現は Amazon S3 に直したいけど〜w

まとめ
AWS Diagram MCP Server を使って Terraform コードからアーキテクチャ図を生成できた👌
AWS Diagram MCP Server を使って AWS SAM テンプレートからアーキテクチャ図を生成する記事も書いた❗️あわせて読んでもらえればと〜