You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Logic App列出管理组订阅及动态标签并自动导出至SharePoint?

解决Logic App中获取Azure订阅标签并生成动态报表的问题

一、直接获取订阅级标签的正确方式

Logic App内置的“Get tags for each subscription”操作会递归拉取资源标签,并非订阅本身的标签。直接调用Azure Resource Manager (ARM) API可精准获取订阅标签:

  • 在Logic App里添加HTTP操作,请求方法设为GET
  • 请求URL填写:https://management.azure.com/subscriptions/{subscriptionId}?api-version=2021-01-01(将{subscriptionId}替换为动态订阅ID变量)
  • 身份验证选择Managed Identity,确保该身份拥有Microsoft.Subscriptions/subscriptions/read权限
  • 解析返回的JSON响应,提取tags字段,此处即为订阅本身的完整键值对标签

二、处理无标签订阅的动态列表生成

针对标签可能不存在的情况,用Logic App的变量和条件逻辑处理:

  • 初始化一个数组变量(例如subscriptionReportData),用于存储最终报表数据
  • 遍历订阅列表时,对每个订阅执行上述ARM API请求后,添加条件判断:
    • 若响应中的tags不为空,构造结构化对象:{ "订阅名称": "{订阅名}", "标签": {标签键值对} }
    • 若tags为空,构造对象:{ "订阅名称": "{订阅名}", "标签": "无标签" }
  • 将构造好的对象追加到数组变量中

三、避免资源标签干扰的注意事项

  • 不要使用遍历订阅内资源的操作来获取订阅标签,这类操作会返回所有嵌套资源的标签,易与订阅标签混淆
  • 如果报表需要同时包含资源标签,可在获取订阅标签后,单独添加“List resources in subscription”操作,提取资源标签并与订阅标签分开展示

四、修正Kusto查询以获取标签键值对

之前的Kusto查询仅拿到标签名,是因为未正确解析标签的JSON结构,调整后的查询如下:

AzureActivity
| where OperationNameValue == "Microsoft.Subscriptions/subscriptions/write"
| extend SubscriptionTags = parse_json(Properties).tags
| project SubscriptionId, SubscriptionName, SubscriptionTags
| where isnotempty(SubscriptionTags)

该查询从Azure Activity日志中解析订阅的完整标签键值对,需确保日志留存时间覆盖所需的历史范围。

内容的提问来源于stack exchange,提问作者Luix O

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 08:05:14