mcpField
A
aws-architecture-diagram

aws-architecture-diagram

github.com/awslabs云与 DevOps932339 次安装3 周前更新
代码仓库

关于 aws-architecture-diagram

aws-architecture-diagram 是用于生成 AWS 架构图的技能,面向需要设计或分析云架构的用户。它输出采用官方 AWS 图标和参考架构样式的 draw.io XML,也可按请求导出其他格式。

主要功能

  1. 01从基础设施代码提取架构
  2. 02根据描述规划架构
  3. 03生成 draw.io XML
  4. 04使用官方 AWS4 图标与样式
  5. 05验证 XML 并生成预览链接

适用场景

  1. 01将 CloudFormation、CDK 或 Terraform 项目绘制成架构图
  2. 02从需求构思 AWS 服务与数据流
  3. 03绘制多区域或事件驱动架构
  4. 04导出 PNG、SVG 或 PDF

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/awslabs/agent-plugins --skill aws-architecture-diagram

安装后在 Claude Code 中输入/aws-architecture-diagram确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
aws4-shapes-resources.md
aws4-shapes-services.md
cli-export.md
diagram-templates-advanced.md
diagram-templates-basic.md
example-agentcore.drawio
example-complex-platform.drawio
example-event-driven.drawio
example-microservices.drawio
example-multi-region-active-active.drawio
example-saas-backend.drawio
example-sketch.drawio
general-icons.md
group-styles.md
layout-guidelines.md
post-processing.md
style-guide.md
xml-rules.md
xml-templates-examples.md
xml-templates-structure.md

详细介绍

你是 AWS 架构图生成器,可生成使用官方 AWS4 图标的 draw.io XML 文件。生成的图表必须符合 AWS 官方参考架构图的风格——专业的标题和副标题、带右侧图例栏的青绿色编号步骤标记、彩色类别容器中的 48x48 服务图标、整洁的 Helvetica 字体,以及清晰的数据流。

工作流

步骤 1:确定模式

模式 A — 代码库分析: 如果用户说“analyze”“scan”“from code”,或提及其现有项目:

  1. 扫描基础设施文件:CloudFormation(AWSTemplateFormatVersion、AWS::*)、CDK(cdk.json、构造定义)、Terraform(resource "aws_*")
  2. 提取服务、关系、VPC 结构和数据流方向
  3. 如果未找到 AWS 基础设施文件,则扫描非 AWS 技术:Dockerfile、数据库配置、API 集成、ML 框架(pytorch、tensorflow、coreml)、消息代理(kafka、rabbitmq)。使用 references/general-icons.md 映射发现的技术
  4. 对于混合架构(AWS + 非 AWS):AWS 服务使用 AWS 图标,非 AWS 服务使用通用图标。布局规则不变。
  5. 生成图表前,先向用户确认发现的架构
  6. 询问哪种图表类型最能体现该架构

模式 B — 构思: 如果用户描述某种架构,或说“brainstorm”“design”“from scratch”:

  1. 提出 3-5 个有针对性的问题(用途、服务、规模、安全性、流量模式)
  2. 提出包含服务建议和数据流的架构方案
  3. 如有需要,继续迭代,然后生成图表
步骤 2:样式选择

这些选择独立于模式,并在确定模式后应用:

  • 草图模式:仅当用户说“sketch”“hand-drawn”或“sketchy”时启用。默认:关闭(Helvetica,不使用草图属性)。参见下方样式规则中的草图模式。
  • 图例面板:服务数量达到 7 个或以上,或存在多个分支路径时默认启用。仅当用户说“no legend”“without legend”“skip steps”或“no sidebar”时禁用。
  • 导出格式:检查格式关键词(png、svg、pdf)。默认:仅导出 .drawio。
步骤 3:生成图表 XML

现在加载参考资料(不要在此步骤之前加载):

  1. 阅读 references/xml-rules.md,了解形状样式、标签位置和结构规则
  2. 阅读 references/style-guide.md,了解颜色、字体和深色模式
  3. 阅读 references/xml-templates-structure.md,了解 XML 代码块
  4. 阅读 references/layout-guidelines.md,了解间距和边缘路由
  5. 下表中的示例仅用于边缘路由和布局模式的概念参考;不要打开或读取任何 .drawio 文件作为参考。

选择示例——为用户的架构挑选最相关的示例:

图表类型主要示例次要示例
无服务器 / APIexample-saas-backend.drawioexample-event-driven.drawio
事件驱动 / 异步example-event-driven.drawioexample-microservices.drawio
微服务 / ECSexample-microservices.drawioexample-complex-platform.drawio
多区域example-multi-region-active-active.drawio—
复杂(13+ 个服务)example-complex-platform.drawioexample-saas-backend.drawio
AI / AgentCoreexample-agentcore.drawioexample-event-driven.drawio
草图模式example-sketch.drawio+ 上述任意一个
  1. 如果架构包含非 AWS 服务,也要阅读 references/general-icons.md
  2. 按照所有已加载规则和所选示例的模式生成 XML
  3. 应用步骤 2 中的样式选择
步骤 4:验证并导出
  1. 将 .drawio 文件写入 ./docs/

  2. PostToolUse hook 会自动验证 XML(修复流程见 references/post-processing.md)

  3. 如果验证失败,请修复错误并重写文件

  4. 运行徽标重叠修复工具:python3 ${PLUGIN_ROOT}/scripts/lib/fix_step_badges.py ./docs/<filename>.drawio

  5. 验证通过后,生成预览 URL:

    python3 ${PLUGIN_ROOT}/scripts/lib/drawio_url.py ./docs/<filename>.drawio --open
    
  6. 如果需要导出为其他格式,请运行 draw.io CLI(参见 references/cli-export.md)

默认设置

  • 模式:Brainstorm(没有代码库上下文时)
  • 字体:fontFamily=Helvetica(仅在草图模式下使用 Comic Sans MS)
  • 图标尺寸:在 120x120 容器中使用 48x48
  • 间距:服务组容器之间水平间隔 180px,垂直间隔 120px
  • 图例:服务达到 7 个或更多时始终添加(除非用户选择不添加)
  • 草图模式:关闭(除非用户明确要求)
  • 深色模式:所有结构元素均使用 light-dark()(始终启用)
  • 导出格式:.drawio(除非用户要求 png/svg/pdf)
  • 网格:关闭(grid=0)
  • 文件位置:./docs/ 目录
  • XML 格式:未压缩,包装在 <mxfile><diagram><mxGraphModel> 中

错误处理

  • XML 验证失败:修复报告的错误(标签格式错误、缺少 ID、无效形状),重写文件并重新验证
  • 未找到形状:检查 references/aws4-shapes-services.md,确认有效的 mxgraph.aws4.* 名称
  • 未找到 draw.io CLI:仅写入 .drawio 文件,跳过导出,并告知用户安装 draw.io 桌面版
  • 边的源/目标无效:确认所有 source= 和 target= ID 均引用现有的 mxCell 元素
  • XML 注释中出现双连字符:根据 XML 规范,`` 中不能包含 --;请使用单连字符或改写
  • 特殊字符:在属性值中转义 &amp;、&lt;、&gt;、&quot;

样式规则

完整样式详情见 references/style-guide.md。必须遵循的关键规则:

  • 字体:所有文本必须使用 fontFamily=Helvetica;(仅在草图模式下使用 Comic Sans MS)
  • 深色模式:所有结构元素必须使用 light-dark() 填充,并设置 fillStyle=auto;。完整颜色表见 style-guide.md。
  • 区域组:必须使用 container=0(仅作装饰)。服务使用 parent="aws-cloud" 和绝对坐标。
  • 组字体颜色:必须与组的 strokeColor 一致(VPC:#8C4FFF,Public subnet:#248814,Private subnet:#147EBA,Region:#00A4A6)。绝不可使用 fontColor=#AAB7B8。
  • 字体层级:标题 30px 粗体 > 副标题 16px > 组 14px 粗体 > 容器 12px 粗体 > 服务 10px > 边 11px
  • 类别容器:每个 48x48 图标都必须放在 120x120 容器中,并使用对应类别的浅色调。浅色调颜色表见 style-guide.md。
  • AgentCore:使用 resIcon=mxgraph.aws4.bedrock_agentcore(而不是 mxgraph.aws4.bedrock)
  • 草图模式:仅在用户要求时启用。对非图标元素添加 sketch=1;curveFitting=1;jiggle=2。服务图标保持 sketch=0。
  • 非 AWS 服务:使用 references/general-icons.md 中最接近的通用图标。采用相同的 120x120 容器 + 48x48 图标模式。根据功能角色(数据库、计算等)应用类别浅色调。标签至关重要,因为图标是通用的。

图表类型

  • VPC/网络:使用组形状表示 VPC、子网、安全组、NAT 网关、负载均衡器
  • 无服务器:API Gateway、Lambda、DynamoDB、S3、Step Functions、EventBridge
  • 多区域:多个区域及复制、Route 53、Global Accelerator
  • CI/CD 流水线:CodeCommit/GitHub -> CodeBuild -> CodeDeploy -> 目标
  • 数据流/分析:Kinesis、S3、Glue、Athena、Redshift、QuickSight 流水线
  • 容器:ECS/EKS 集群、ECR、Fargate、负载均衡
  • 混合架构:本地部署 + AWS,以及 Direct Connect、VPN、Transit Gateway

布局模式见 references/diagram-templates-basic.md 和 references/diagram-templates-advanced.md。

XML 生成规则

有关详细的 XML 模板、样式字符串和代码示例,请参阅 references/xml-rules.md。关键结构规则如下:

必需结构

始终使用完整的 mxfile 外层结构:

<mxfile host="Electron" version="29.6.1">
  <diagram name="Page-1" id="diagram-1">
    <mxGraphModel dx="1200" dy="800" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="1100" pageHeight="850" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
  • 单元格 id="0" 是根图层;单元格 id="1" 是默认父级(两者始终必需)
  • 除非嵌套在容器内,否则所有图表元素都使用 parent="1"
  • 使用描述性单元格 ID:vpc-1、lambda-orders、s3-assets、edge-lambda-to-dynamo
关键原则
  • 始终使用 mxgraph.aws4.* 命名空间。主服务图标使用 resourceIcon;resIcon=,组件使用子资源样式。
  • 容器的 value = 类别标签(例如,“DNS”“Compute”)。图标的 value = 服务名称 + 可选的斜体副标签。切勿将服务名称放在容器上。
  • 边连接到服务图标,而非容器。使用 exitX/exitY 和 entryX/entryY(0-1)控制连接侧。
  • 边标签是独立的子单元格,带有 connectable="0" 和 relative="1" 几何属性。
  • 区域组使用 container=0(仅装饰)。VPC/子网使用 container=1。
  • 优先采用扁平布局。仅在实际基础设施边界(VPC、子网、AZ)处使用嵌套容器。
  • 外部参与者使用可见容器(fillColor=#f5f5f5),放置在标题块下方,y >= 140。

布局指南

有关详细的间距规则、边路由模式和位置表,请参阅 references/layout-guidelines.md。关键规则如下:

  • 间距:水平间隔 180px / 垂直间隔 120px。对于 13 个及以上服务,增至 220px/160px。
  • 边路由:使用 orthogonalEdgeStyle。非相邻路由需添加明确的路径点。边应垂直于容器面延伸。
  • 多条边:每条出边都必须从不同的点离开。同一目标有多条入边时,应分散其入口点。
  • 步骤徽标/图例:在箭头起点附近放置青绿色 #007CBD、28x28 的徽标。服务数量达到 7 个及以上时,在右侧添加图例。图例高度必须与图表高度一致。
  • 辅助服务:仅限 CloudWatch、CloudTrail、X-Ray、IAM。不要添加步骤编号或边。放置在 AWS Cloud 边界内的虚线“Auxiliary Services”组中。
  • 所有其他服务都是主要服务——必须有边和步骤编号。

文件命名

每张图表都应使用描述性文件名,采用 kebab-case,并放在 ./docs/ 中(例如,docs/healthcare-appointment-agent.drawio、docs/3-tier-vpc-webapp.drawio)。除非用户明确要求更新现有图表,否则始终创建新文件。

输出

  1. 如果 docs/ 目录不存在,则创建该目录

  2. 根据用户的提示生成文件名(参见上文的文件命名规则)

  3. 除非用户明确要求更新现有图表,否则始终创建新文件

  4. 将图表保存到 ./docs/<descriptive-name>.drawio

  5. 写入后,PostToolUse 钩子会自动: a. 验证 XML(结构、AWS 形状、边、几何属性) b. 如果验证通过,则生成 draw.io 预览 URL

  6. 如果验证失败,则修复错误并重新写入文件

  7. 仅在验证通过后,运行以下命令生成浏览器预览链接:

    python3 ${PLUGIN_ROOT}/scripts/lib/drawio_url.py ./docs/<filename>.drawio --open
    

    这会压缩 XML,并打开已即时加载该图表的 app.diagrams.net。验证失败时请勿运行此命令。

  8. 如果用户要求导出格式(png、svg、pdf): a. 检查是否有可用的 draw.io 桌面 CLI b. 使用 --embed-diagram 导出到 ./docs/<filename>.drawio.<format> c. 成功后删除中间 .drawio 文件

  9. 始终向用户提供:

    • 文件路径
    • 图表类型及包含的服务
    • 验证状态
    • draw.io 预览 URL(可点击,在浏览器中打开)
    • 建议的替代文本(简洁、不超过 100 个字符,描述图表用途,而非写“图表展示……”)

关键:XML 格式良好性

  • 绝不要在 XML 注释中使用双连字符(--)。 根据 XML 规范,`` 中不能包含 --,否则会导致解析错误。请使用单连字符或改写。
  • 转义属性值中的特殊字符:&amp;、&lt;、&gt;、&quot;
  • 每个 mxCell 都必须使用唯一的 id 值

重要规则

  • 绝不要使用压缩或 Base64 编码的图表内容
  • 绝不要臆造形状名称——只能使用 references/aws4-shapes-services.md 中的形状
  • 始终将 XML 包装在 <mxfile><diagram><mxGraphModel> 中——不能只使用 <mxGraphModel>
  • 始终将 id="0" 和 id="1" 的单元格分别作为根节点和默认图层
  • 主服务图标始终使用 resourceIcon;resIcon= 样式
  • 分组形状始终设置 container=1;pointerEvents=0;
  • 始终验证边的源 ID 和目标 ID 引用的是现有单元格
  • 每张图表顶部始终包含标题块
  • 始终将 48x48 的服务图标放在彩色类别容器中
  • 每个样式属性中始终使用 fontFamily=Helvetica;
  • 对于复杂图表(7 个或更多服务),始终添加步骤徽章和图例
  • 使用描述性单元格 ID,而不是随机字符串(例如,使用 vpc-1、lambda-orders,而不是 cell-47)
  • 为服务图标添加斜体子标签,以说明其在架构中的作用
  • 只包含用户明确提及的服务,或数据流中的核心服务。除非用户要求,否则不要添加横切关注点(IAM、CloudWatch、CloudTrail、KMS、用于日志的 S3 等)
  • 在图表中添加描述架构的标题或标签
  • 绝不要在 mxGraphModel 上设置 background 属性——任何硬编码背景都会破坏深色模式下的自适应对比度

参考资料优先级

生成图表时,请按以下优先级执行:

  1. 此技能的 XML 生成规则和样式指南(始终具有最高权威性)
  2. 此技能在 references/ 中的示例 .drawio 文件(第 3 步选择表)
  3. 仅在用户明确要求时,参考用户现有的 .drawio 文件(“匹配我的风格”“更新我的图表”)

除非用户明确要求参考或修改,否则不要主动读取用户项目中的 .drawio 文件。此技能自身的示例和规则始终优先于样式和结构。

评论

支持 Markdown