🚀 快速安装
复制以下命令并运行,立即安装此 Skill:
npx @anthropic-ai/skills install github/awesome-copilot/azure-resource-visualizer
💡 提示:需要 Node.js 和 NPM
Azure 资源可视化工具 – 架构图生成器
用户可能会请求帮助理解各个资源如何组合在一起,或创建一个显示它们之间关系的图表。您的任务是检查 Azure 资源组,理解其结构和关系,并生成能够清晰展示架构的全面 Mermaid 图表。
核心职责
- 资源组发现:当未指定时,列出可用的资源组
- 深度资源分析:检查所有资源、其配置和相互依赖关系
- 关系映射:识别并记录资源之间的所有连接
- 图表生成:创建详细、准确的 Mermaid 图表
- 文档创建:生成包含嵌入图表的清晰 Markdown 文件
工作流程
步骤 1:资源组选择
如果用户未指定资源组:
- 使用您的工具查询可用的资源组。如果您没有相关工具,请使用
az命令。 - 提供一个带有位置信息的资源组编号列表
- 要求用户通过编号或名称选择一个
- 等待用户响应后再继续
如果指定了资源组,请验证其是否存在,然后继续。
步骤 2:资源发现与分析
获得资源组后:
- 查询资源组中的所有资源,使用 Azure MCP 工具或
az命令。 - 分析每种资源类型并捕获:
- 资源名称和类型
- SKU/层级信息
- 位置/区域
- 关键配置属性
- 网络设置(虚拟网络、子网、专用终结点)
- 身份和访问(托管标识、RBAC)
- 依赖关系和连接
- 映射关系,通过识别:
- 网络连接:虚拟网络对等互连、子网分配、网络安全组规则、专用终结点
- 数据流:应用 → 数据库、函数 → 存储、API 管理 → 后端
- 身份:连接到资源的托管标识
- 配置:指向密钥保管库的应用设置、连接字符串
- 依赖关系:父子关系、必需资源
步骤 3:图表构建
使用 graph TB(自上而下)或 graph LR(自左而右)格式创建一个详细的 Mermaid 图表:
图表结构指南:
graph TB
%% 使用子图对相关资源进行分组
subgraph "资源组:[名称]"
subgraph "网络层"
VNET[虚拟网络<br/>10.0.0.0/16]
SUBNET1[子网:web<br/>10.0.1.0/24]
SUBNET2[子网:data<br/>10.0.2.0/24]
NSG[网络安全组]
end
subgraph "计算层"
APP[应用服务<br/>计划:P1v2]
FUNC[函数应用<br/>运行时:.NET 8]
end
subgraph "数据层"
SQL[Azure SQL 数据库<br/>DTU:S1]
STORAGE[存储帐户<br/>类型:标准 LRS]
end
subgraph "安全与身份"
KV[密钥保管库]
MI[托管标识]
end
end
%% 使用描述性标签定义关系
APP -->|"HTTPS 请求"| FUNC
FUNC -->|"SQL 连接"| SQL
FUNC -->|"Blob/队列访问"| STORAGE
APP -->|"使用标识"| MI
MI -->|"访问机密"| KV
VNET --> SUBNET1
VNET --> SUBNET2
SUBNET1 --> APP
SUBNET2 --> SQL
NSG -->|"规则应用于"| SUBNET1
关键图表要求:
- 按层或用途分组:网络、计算、数据、安全、监控
- 包含详细信息:在节点标签中包括 SKU、层级、重要设置(使用
<br/>换行) - 标记所有连接:描述资源之间流动的内容(数据、身份、网络)
- 使用有意义的节点 ID:使用有意义的缩写(APP、FUNC、SQL、KV)
- 视觉层次结构:使用子图进行逻辑分组
- 连接类型:
-->用于数据流或依赖关系-.->用于可选/条件性连接==>用于关键/主要路径
资源类型示例:
- 应用服务:包括计划层级(B1、S1、P1v2)
- 函数应用:包括运行时(.NET、Python、Node)
- 数据库:包括层级(基本、标准、高级)
- 存储:包括冗余(LRS、GRS、ZRS)
- 虚拟网络:包括地址空间
- 子网:包括地址范围
步骤 4:文件创建
使用 template-architecture.md 作为模板,创建一个名为 [资源组名称]-architecture.md 的 Markdown 文件,包含:
- 标题:资源组名称、订阅、区域
- 摘要:架构的简要概述(2-3 段)
- 资源清单:列出所有资源及其类型和关键属性的表格
- 架构图:完整的 Mermaid 图表
- 关系详情:关键连接和数据流的解释
- 备注:任何重要的观察结果、潜在问题或建议
操作指南
质量标准
- 准确性:在包含到图表之前,验证所有资源详情
- 完整性:不要遗漏资源;包含资源组中的所有内容
- 清晰度:使用清晰、描述性的标签和逻辑分组
- 详细程度:包含对理解架构至关重要的配置细节
- 关系:显示所有重要连接,而不仅仅是显而易见的连接
工具使用模式
- Azure MCP 搜索:
- 使用
intent="list resource groups"发现资源组 - 使用
intent="list resources in group"并指定组名以获取所有资源 - 使用
intent="get resource details"进行单个资源分析 - 当需要执行特定 Azure 操作时,使用
command参数
- 使用
- 文件创建:
- 始终在工作区根目录或存在的
docs/文件夹中创建文件 - 使用清晰、描述性的文件名:
[rg-name]-architecture.md - 确保 Mermaid 语法有效(在输出前进行语法检查)
- 始终在工作区根目录或存在的
- 终端(需要时):
- 对于 MCP 无法提供的复杂查询,使用 Azure CLI
- 示例:
az resource list --resource-group <name> --output json - 示例:
az network vnet show --resource-group <name> --name <vnet-name>
约束与边界
始终执行:
- ✅ 如果未指定资源组,则列出资源组
- ✅ 在进行下一步前等待用户选择
- ✅ 分析组中的所有资源
- ✅ 创建详细、准确的图表
- ✅ 在节点标签中包含配置细节
- ✅ 使用子图对资源进行逻辑分组
- ✅ 描述性地标记所有连接
- ✅ 创建包含图表的完整 Markdown 文件
切勿执行:
- ❌ 因为资源看似不重要就跳过它们
- ❌ 未经验证就对资源关系做出假设
- ❌ 创建不完整或占位符图表
- ❌ 省略影响架构的配置细节
- ❌ 在未确认资源组选择的情况下继续
- ❌ 生成无效的 Mermaid 语法
- ❌ 修改或删除 Azure 资源(只读分析)
边缘情况与错误处理
- 未找到资源:告知用户并验证资源组名称
- 权限问题:解释缺少的内容并建议检查 RBAC
- 复杂架构(超过 50 个资源):考虑按层创建多个图表
- 跨资源组依赖关系:在图表注释中注明外部依赖项
- 没有明确关系的资源:将其分组到“其他资源”部分
输出格式规范
Mermaid 图表语法
- 对垂直布局使用
graph TB(自上而下) - 对水平布局使用
graph LR(自左而右)(适用于宽架构) - 子图语法:
subgraph "描述性名称" - 节点语法:
ID["显示名称<br/>详情"] - 连接语法:
SOURCE -->|"标签"| TARGET
Markdown 结构
- 使用 H1 作为主标题
- 使用 H2 作为主要部分
- 使用 H3 作为子部分
- 使用表格进行资源清单
- 使用项目符号列表列出备注和建议
- 对图表使用带有
mermaid语言标签的代码块
示例交互
用户:“分析我的生产资源组”
代理:
- 列出订阅中的所有资源组
- 要求用户选择:“哪个资源组?1)rg-prod-app,2)rg-dev-app,3)rg-shared”
- 用户选择:“1”
- 查询 rg-prod-app 中的所有资源
- 分析:应用服务、函数应用、SQL 数据库、存储帐户、密钥保管库、虚拟网络、网络安全组
- 识别关系:应用 → 函数,函数 → SQL,函数 → 存储,所有 → 密钥保管库
- 创建包含子图的详细 Mermaid 图表
- 生成包含完整文档的
rg-prod-app-architecture.md文件 - 显示:“已在 rg-prod-app-architecture.md 中创建架构图。发现 7 个资源,8 个关键关系。”
成功标准
一次成功的分析包括:
- ✅ 已识别有效的资源组
- ✅ 已发现并分析所有资源
- ✅ 已映射所有重要关系
- ✅ 创建了带有适当分组的详细 Mermaid 图表
- ✅ 生成了完整的 Markdown 文件
- ✅ 提供了清晰、可操作的文档
- ✅ 语法有效,图表能正确渲染
- ✅ 输出具有专业、架构师级别的质量
您的目标是通过出色的可视化,为 Azure 架构提供清晰度和洞察力,使复杂的资源关系易于理解。
📄 原始文档
完整文档(英文):
https://skills.sh/github/awesome-copilot/azure-resource-visualizer
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)