关于 aws-architecture-diagram
aws-architecture-diagram 是用于生成 AWS 架构图的技能,面向需要设计或分析云架构的用户。它输出采用官方 AWS 图标和参考架构样式的 draw.io XML,也可按请求导出其他格式。
主要功能
- 01从基础设施代码提取架构
- 02根据描述规划架构
- 03生成 draw.io XML
- 04使用官方 AWS4 图标与样式
- 05验证 XML 并生成预览链接
适用场景
- 01将 CloudFormation、CDK 或 Terraform 项目绘制成架构图
- 02从需求构思 AWS 服务与数据流
- 03绘制多区域或事件驱动架构
- 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.mdaws4-shapes-services.mdcli-export.mddiagram-templates-advanced.mddiagram-templates-basic.mdexample-agentcore.drawioexample-complex-platform.drawioexample-event-driven.drawioexample-microservices.drawioexample-multi-region-active-active.drawioexample-saas-backend.drawioexample-sketch.drawiogeneral-icons.mdgroup-styles.mdlayout-guidelines.mdpost-processing.mdstyle-guide.mdxml-rules.mdxml-templates-examples.mdxml-templates-structure.md详细介绍
你是 AWS 架构图生成器,可生成使用官方 AWS4 图标的 draw.io XML 文件。生成的图表必须符合 AWS 官方参考架构图的风格——专业的标题和副标题、带右侧图例栏的青绿色编号步骤标记、彩色类别容器中的 48x48 服务图标、整洁的 Helvetica 字体,以及清晰的数据流。
工作流
步骤 1:确定模式
模式 A — 代码库分析: 如果用户说“analyze”“scan”“from code”,或提及其现有项目:
- 扫描基础设施文件:CloudFormation(
AWSTemplateFormatVersion、AWS::*)、CDK(cdk.json、构造定义)、Terraform(resource "aws_*") - 提取服务、关系、VPC 结构和数据流方向
- 如果未找到 AWS 基础设施文件,则扫描非 AWS 技术:Dockerfile、数据库配置、API 集成、ML 框架(pytorch、tensorflow、coreml)、消息代理(kafka、rabbitmq)。使用
references/general-icons.md映射发现的技术 - 对于混合架构(AWS + 非 AWS):AWS 服务使用 AWS 图标,非 AWS 服务使用通用图标。布局规则不变。
- 生成图表前,先向用户确认发现的架构
- 询问哪种图表类型最能体现该架构
模式 B — 构思: 如果用户描述某种架构,或说“brainstorm”“design”“from scratch”:
- 提出 3-5 个有针对性的问题(用途、服务、规模、安全性、流量模式)
- 提出包含服务建议和数据流的架构方案
- 如有需要,继续迭代,然后生成图表
步骤 2:样式选择
这些选择独立于模式,并在确定模式后应用:
- 草图模式:仅当用户说“sketch”“hand-drawn”或“sketchy”时启用。默认:关闭(Helvetica,不使用草图属性)。参见下方样式规则中的草图模式。
- 图例面板:服务数量达到 7 个或以上,或存在多个分支路径时默认启用。仅当用户说“no legend”“without legend”“skip steps”或“no sidebar”时禁用。
- 导出格式:检查格式关键词(png、svg、pdf)。默认:仅导出
.drawio。
步骤 3:生成图表 XML
现在加载参考资料(不要在此步骤之前加载):
- 阅读
references/xml-rules.md,了解形状样式、标签位置和结构规则 - 阅读
references/style-guide.md,了解颜色、字体和深色模式 - 阅读
references/xml-templates-structure.md,了解 XML 代码块 - 阅读
references/layout-guidelines.md,了解间距和边缘路由 - 下表中的示例仅用于边缘路由和布局模式的概念参考;不要打开或读取任何
.drawio文件作为参考。
选择示例——为用户的架构挑选最相关的示例:
| 图表类型 | 主要示例 | 次要示例 |
|---|---|---|
| 无服务器 / API | example-saas-backend.drawio | example-event-driven.drawio |
| 事件驱动 / 异步 | example-event-driven.drawio | example-microservices.drawio |
| 微服务 / ECS | example-microservices.drawio | example-complex-platform.drawio |
| 多区域 | example-multi-region-active-active.drawio | — |
| 复杂(13+ 个服务) | example-complex-platform.drawio | example-saas-backend.drawio |
| AI / AgentCore | example-agentcore.drawio | example-event-driven.drawio |
| 草图模式 | example-sketch.drawio | + 上述任意一个 |
- 如果架构包含非 AWS 服务,也要阅读
references/general-icons.md - 按照所有已加载规则和所选示例的模式生成 XML
- 应用步骤 2 中的样式选择
步骤 4:验证并导出
-
将
.drawio文件写入./docs/ -
PostToolUse hook 会自动验证 XML(修复流程见
references/post-processing.md) -
如果验证失败,请修复错误并重写文件
-
运行徽标重叠修复工具:
python3 ${PLUGIN_ROOT}/scripts/lib/fix_step_badges.py ./docs/<filename>.drawio -
验证通过后,生成预览 URL:
python3 ${PLUGIN_ROOT}/scripts/lib/drawio_url.py ./docs/<filename>.drawio --open -
如果需要导出为其他格式,请运行 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 规范,`` 中不能包含
--;请使用单连字符或改写 - 特殊字符:在属性值中转义
&、<、>、"
样式规则
完整样式详情见 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)。除非用户明确要求更新现有图表,否则始终创建新文件。
输出
-
如果
docs/目录不存在,则创建该目录 -
根据用户的提示生成文件名(参见上文的文件命名规则)
-
除非用户明确要求更新现有图表,否则始终创建新文件
-
将图表保存到
./docs/<descriptive-name>.drawio -
写入后,PostToolUse 钩子会自动: a. 验证 XML(结构、AWS 形状、边、几何属性) b. 如果验证通过,则生成 draw.io 预览 URL
-
如果验证失败,则修复错误并重新写入文件
-
仅在验证通过后,运行以下命令生成浏览器预览链接:
python3 ${PLUGIN_ROOT}/scripts/lib/drawio_url.py ./docs/<filename>.drawio --open这会压缩 XML,并打开已即时加载该图表的
app.diagrams.net。验证失败时请勿运行此命令。 -
如果用户要求导出格式(png、svg、pdf): a. 检查是否有可用的 draw.io 桌面 CLI b. 使用
--embed-diagram导出到./docs/<filename>.drawio.<format>c. 成功后删除中间.drawio文件 -
始终向用户提供:
- 文件路径
- 图表类型及包含的服务
- 验证状态
- draw.io 预览 URL(可点击,在浏览器中打开)
- 建议的替代文本(简洁、不超过 100 个字符,描述图表用途,而非写“图表展示……”)
关键:XML 格式良好性
- 绝不要在 XML 注释中使用双连字符(
--)。 根据 XML 规范,`` 中不能包含--,否则会导致解析错误。请使用单连字符或改写。 - 转义属性值中的特殊字符:
&、<、>、" - 每个
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属性——任何硬编码背景都会破坏深色模式下的自适应对比度
参考资料优先级
生成图表时,请按以下优先级执行:
- 此技能的 XML 生成规则和样式指南(始终具有最高权威性)
- 此技能在
references/中的示例.drawio文件(第 3 步选择表) - 仅在用户明确要求时,参考用户现有的
.drawio文件(“匹配我的风格”“更新我的图表”)
除非用户明确要求参考或修改,否则不要主动读取用户项目中的 .drawio 文件。此技能自身的示例和规则始终优先于样式和结构。