如何通过Azure Resource Graph查询获取应用的全部关联资源?
解决Azure Resource Graph获取全部应用关联资源的问题
一、获取全部6个应用关联资源的最佳方案
- 结合应用标识+多维度筛选:如果你的6个应用是Azure App Service(或其他可明确识别的资源类型),先定位这6个应用的资源ID或名称,再通过两种维度覆盖所有关联资源:
- 拉取这些应用所在所有资源组内的全部资源(不管资源有没有打标签)
- 拉取自身带有
app_id标签的资源(覆盖跨组关联但直接打了标签的资源)
最后把这两部分结果合并去重,就能拿到完整的100个资源。
- 混合标签筛选逻辑:直接查询“资源自身带
app_id标签 OR 资源所属资源组带app_id标签”的资源,这种方式能同时覆盖资源直接打标和资源组打标的场景,不用提前知道应用的资源组信息。
二、筛选带app_id标签的资源组并获取组内所有资源的查询语句
以下是Azure Resource Graph的Kusto查询语句,会先提取所有带有app_id标签的资源组,再关联查询这些组内的全部资源,同时保留资源组的app_id标识:
// 第一步:获取所有带app_id标签的资源组 resourcecontainers | where type == "microsoft.resources/subscriptions/resourcegroups" | where tags contains "app_id" | project rgName = name, appId = tags.app_id // 第二步:关联查询这些资源组下的所有资源 | join kind=inner ( resources | project resourceName = name, resourceType = type, rgName = resourceGroup, resourceId = id ) on rgName // 整理输出字段,可按需调整 | project appId, rgName, resourceName, resourceType, resourceId // 可选:去重避免同一资源被多次匹配 | distinct appId, resourceId
补充说明
- 如果
app_id标签的键名存在大小写差异(如App_ID、APP_ID),可以把where tags contains "app_id"替换为where tags has_any ("app_id", "App_ID", "APP_ID")来兼容不同命名。 - 若需要关联应用本身的信息(比如应用名称),可以再加入应用资源的查询,通过
appId关联到对应的应用详情。
内容的提问来源于stack exchange,提问作者vcb0127
相关产品推荐
相关产品推荐

