azure-resource-lookup
作者 microsoftazure-resource-lookup 通过 Azure Resource Graph,帮助你在多个订阅和资源组之间列出、查找和查看各类 Azure 资源。非常适合用于资产盘点、标签分析、孤立资源排查以及跨订阅查询。不适用于执行部署变更、成本优化或管理非 Azure 云环境。
概览
什么是 azure-resource-lookup?
azure-resource-lookup 是一个用于 Azure 报表和资源发现的技能,帮助你在多个订阅和资源组之间列出、查找和查看几乎任何类型的 Azure 资源。
它使用 Azure Resource Graph (ARG) 对你的 Azure Resource Manager (ARM) 元数据执行快速的跨订阅查询,非常适合处理类似以下这类“资产盘点”问题:
- "list websites"
- "list virtual machines"
- "list my VMs in subscription X"
- "show storage accounts in this resource group"
- "find container apps in region Y"
- "what resources do I have?"
在后台,azure-resource-lookup 会把这些意图转换为 ARG 查询,让你无需为每个请求手写 KQL,就能获得结构化、接近实时的环境视图。
这个技能适合谁?
azure-resource-lookup 主要面向:
- 云和平台工程师:需要快速了解多个订阅中 Azure 资源整体情况。
- DevOps 和 SRE 团队:在日常运维流程中按资源类型、状态或标签进行搜索。
- 安全和合规团队:需要核查必填标签或配置是否按要求落实。
- 开发人员:想快速回答“这个应用/组件跑在哪?”或“这次部署创建了哪些资源?”而不必手动在 Azure Portal 中逐层点击查找。
如果你的主要需求是在 Azure 中进行报表统计、资源盘点和资源发现,这个技能非常适合。
azure-resource-lookup 解决哪些问题?
在以下场景中适合使用 azure-resource-lookup:
- 列出常见类型的资源
- 虚拟机、Web 应用、存储账户、container apps、数据库等。
- 按作用域展示资源
- 将结果限定在某个订阅、一组订阅或指定资源组中。
- 执行跨订阅搜索
- 回答诸如“show all storage accounts in all production subscriptions”这样的需求,而不用频繁切换上下文。
- 查找孤立或未使用的资源
- 发现未挂载磁盘、未用的 NIC、闲置的 IP 等潜在清理对象。
- 检查标签覆盖率和命名规范
- 找出缺少必填标签的资源,或按标签值(例如
env、owner、costCenter)对资源分组。
- 找出缺少必填标签的资源,或按标签值(例如
- 构建资源资产清单
- 按资源类型、区域或订阅统计数量,用于文档记录或审计。
- 按资源状态筛选
- 利用 Resource Graph 中的元数据,查找已停止、不健康或创建失败的资源。
这些能力非常契合各种报表和可见性场景,帮助你获得现有 Azure 基础设施的清晰、可查询概览。
什么时候不应该使用这个技能?
azure-resource-lookup 不适用于:
- 部署或修改资源
- 它不会创建、更新或删除 Azure 资源。
- 成本和优化分析
- 它不会计算费用、提供缩配建议或输出详细成本拆分。
- 非 Azure 云或本地资源
- 它仅面向通过 Azure Resource Graph 暴露的 Azure Resource Manager 资源。
- 深度资源专用工具场景
- 对于非常专业、深度的资源级操作(例如数据库 schema 管理、Kubernetes 对象管理、复杂 VM 配置修改),应使用专门工具或其他技能。
如果你需要的是 运营洞察和 Azure 范围内的资产盘点,azure-resource-lookup 非常适合;如果你需要 变更、自动化或成本分析,建议与其他工具搭配使用。
使用指南
前提条件
在安装和使用 azure-resource-lookup 之前,请确认:
- 你拥有一个 Azure 账户,并在目标订阅中具备读取资源的相应权限。
- Azure Resource Graph 已在你的租户中可用(大多数情况下默认启用)。
- 你的 Agent 或自动化环境可以对 Azure 进行身份验证(根据环境配置,支持
az login、managed identity 或 service principal 等方式)。
该技能位于 GitHub 仓库 microsoft/azure-skills 的 skills/azure-resource-lookup 下,设计为可插入支持该仓库技能机制的兼容 Agent 运行时中。
安装步骤
1. 添加 azure-skills 仓库和该技能
如果你的 Agent 运行时支持 npx skills(例如 Microsoft 的 skills 工具),可以直接从 GitHub 添加 azure-resource-lookup:
npx skills add https://github.com/microsoft/azure-skills --skill azure-resource-lookup
该命令会:
- 注册
microsoft/azure-skills仓库为技能源。 - 将
azure-resource-lookup技能定义及相关参考资料安装到你的 Agent 环境中。
如果你的平台使用其他机制,请将其指向:
- Repository:
https://github.com/microsoft/azure-skills - Skill path:
skills/azure-resource-lookup
并按照平台文档说明添加技能。
2. 查看技能定义
安装完成后,打开 azure-resource-lookup 目录中的 SKILL.md。该文件包含:
- 官方的功能描述和主要使用场景。
- 关于何时使用本技能以及与同仓库中其他技能的对比说明。
通过这些信息确认该技能是否契合你的使用场景(在 Azure 中做资源盘点和查询)。
3. 为你的 Agent 配置 Azure 访问
配置 Agent 所在环境,使其可以查询 Azure Resource Graph。常见模式包括:
- 用 Azure CLI 进行本地测试的 交互式登录:
az login - 用于非交互式自动化的 service principal:
az login --service-principal -u <APP_ID> -p <PASSWORD_OR_CERT> --tenant <TENANT_ID> - 在支持的 Azure 托管服务中使用 managed identity。
该技能本身只读取资源元数据,因此通常只需要对被查询订阅具备 Reader 或类似的只读权限。
4. 将技能接入你的 Agent
大多数支持该仓库的 Agent 平台在安装完成后会自动暴露技能。在配置界面或 JSON manifest 中,请确认:
azure-resource-lookup已列入启用的技能列表。- 该技能可以访问前一步中配置的 Azure 凭据。
如需最终接线方式,请参考你的 Agent 框架文档,了解如何在技能与工具之间完成集成。
使用该技能查询 Azure 资源
常见自然语言 Prompt
接入完成后,你可以通过自然语言 Prompt 与 azure-resource-lookup 交互。与 SKILL.md 中意图相符的示例包括:
-
资源列表
- "List virtual machines in my production subscription."
- "Show storage accounts in resource group
rg-app-prod." - "List container apps in region
westeurope."
-
基于标签的搜索
- "Find resources tagged
env=prodin all subscriptions." - "Which resources are missing the
ownertag in subscription X?"
- "Find resources tagged
-
孤立资源
- "List unattached managed disks in all subscriptions."
- "Show idle IP addresses that are not associated with any resource."
-
资产盘点和数量统计
- "Count all resources by type across all subscriptions."
- "How many storage accounts are in each region?"
-
基于状态的查询
- "Show virtual machines that are stopped."
- "List resources in a failed provisioning state."
该技能会将这些请求转换为 Azure Resource Graph 查询,并返回结构化结果,便于报表或后续分析使用。
使用 Azure Resource Graph 查询模式
对于更高级的使用场景,可查看仓库中的参考文件 references/azure-resource-graph.md。该文件包含:
- 标准
az graph query命令格式:az graph query -q "<KQL>" --query "data[].{col1:field1, col2:field2}" -o table - 关键数据表,例如
Resources、ResourceContainers、HealthResources等。 - Resource Graph 中 KQL 的基础用法,如
=~(不区分大小写比较)、mv-expand、isempty()、tostring()。 - 实用的资产盘点模式,例如:
- 按类型统计资源数量。
- 按位置对资源分组。
即便你不会手动运行 az graph query,这些模式也有助于理解该技能在后台做了什么,以及如何解读输出结果。
集成到流程和报表中
由于 azure-resource-lookup 专注于只读的资产盘点和资源发现,因此非常适合集成到:
- 运维看板——将查询结果输送到报表工具,用于每日资源数量与覆盖率总览。
- 治理与合规检查——定期扫描缺失标签或违规配置。
- 清理行动——在用其他工具执行删除流程前,先识别孤立磁盘、未用 NIC 或闲置 IP。
- 发布和环境评审——在发布后核查各环境中实际存在的资源。
将这个技能作为更大流程中的信息层:它负责告诉你“有哪些资源、当前状态如何”,而其他工具在此基础上执行变更操作。
常见问题(FAQ)
azure-resource-lookup 底层依赖的是什么?
azure-resource-lookup 基于 Azure Resource Graph 构建,后者是 Azure 针对 ARM 资源的索引元数据服务。该技能通过发送 ARG 风格的查询,在多个订阅和资源组间快速搜索和筛选资源,然后将结果返回给你的 Agent。
我可以用 azure-resource-lookup 创建或删除 Azure 资源吗?
不可以。azure-resource-lookup 是一个只读的资源发现和报表技能,明确不用于部署、修改或删除 Azure 资源。对于这些任务,请搭配 ARM/Bicep 模板、Terraform 或其他自动化技能使用。
这个技能支持非 Azure 云吗?
不支持。azure-resource-lookup 仅适用于通过 Azure Resource Graph 暴露的 Azure Resource Manager 资源,无法查询 AWS、GCP 或本地环境。
azure-resource-lookup 适合做成本分析或优化吗?
不直接适合。虽然你可以用它做资源盘点(这通常是成本分析的输入),但该技能本身并非为成本优化设计,不会提供费用计算、价格估算或缩配建议。
使用这个技能需要什么权限?
你至少需要对要查询的订阅和资源组拥有 读取权限(例如 Reader 角色)。由于 azure-resource-lookup 是只读的,并通过 Resource Graph 工作,一般不需要超出读取级别的高权限。
azure-resource-lookup 与 Azure Portal 中的资源搜索有何不同?
Azure Portal 提供交互式搜索和过滤功能。而 azure-resource-lookup 提供:
- 可脚本化、可重复的查询,可跨多个订阅执行。
- 结构化输出,便于 Agent 和自动化流程直接消费。
- 自然语言入口,无需为每个问题手写 KQL。
当你需要的是一致、自动化的资产盘点和资源发现,而不是临时手动搜索时,它尤其有价值。
哪里可以看到更多查询示例?
在 microsoft/azure-skills 仓库的 azure-resource-lookup 目录下,可以查看:
SKILL.md:了解高层行为和使用说明。references/azure-resource-graph.md:查看具体的 Azure Resource Graph 查询示例和 KQL 提示。
可以将这些示例作为参考,用于理解和扩展你通过该技能提出的问题类型。
什么时候应该考虑使用其他技能?
当你需要以下能力时,可以考虑使用其他或额外的技能:
- 变更基础设施(创建、更新、删除、扩缩资源)。
- 管理资源内部的工作负载(例如应用部署、数据库 schema 管理或 Kubernetes 对象)。
- 执行超出元数据报表范围的细粒度成本、性能或安全分析。
在这些情况下,可以用 azure-resource-lookup 做前期的发现和盘点,然后交由专门的部署、监控或安全工具完成后续步骤。
