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

Azure Python SDK为订阅添加标签失败,请求排查问题

问题分析与解决

你的代码问题在于混淆了全局标签定义管理和资源(订阅)标签应用的API:

  • 你调用的rc.tags.create_or_update(tag_name="testing_one")是用来创建/更新全局的标签名称(即Azure中可复用的标签键),并不是将这个标签应用到具体的订阅资源上,所以订阅上看不到标签。
  • 要实现和az tag update --operation merge --resource-id /subscriptions/{subscription-id} --tags <tag-name>=<tag-value>相同的效果,需要使用begin_update_at_scope方法来针对订阅资源更新标签。

修正后的代码示例

import os
from azure.identity import DefaultAzureCredential
from azure.mgmt.resource.subscriptions import SubscriptionClient
from azure.mgmt.resource.resources import ResourceManagementClient

def main():
    credential = DefaultAzureCredential()
    subscription_client = SubscriptionClient(credential=credential)

    # 遍历所有订阅
    for sub in subscription_client.subscriptions.list():
        sub_id = sub.subscription_id
        rc = ResourceManagementClient(credential=credential, subscription_id=sub_id)
        
        # 订阅的资源ID格式为 /subscriptions/{subscription-id}
        scope = f"/subscriptions/{sub_id}"
        # 执行标签合并操作,和az命令的--operation merge对应
        update_result = rc.tags.begin_update_at_scope(
            scope=scope,
            operation="merge",
            properties={"tags": {"testing_one": "your-tag-value"}}  # 这里需要指定标签值
        ).result()
        
        print(f"订阅 {sub_id} 的标签更新结果: {update_result}")

if __name__ == "__main__":
    main()

关键说明

  • scope参数:必须传入订阅的完整资源ID,格式为/subscriptions/{subscription-id},这对应az命令中的--resource-id参数。
  • operation参数:设为merge,和az命令的--operation merge行为一致,保留现有标签并添加新标签;如果要替换所有标签可以设为replace。
  • tags字典:必须包含键值对,az命令中--tags <tag-name>=<tag-value>的格式对应这里的字典结构,不能只传标签名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:01:24