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

如何使用Azure Python SDK更新Azure资源的tags标签

Azure Python SDK更新普通资源标签解决方案

你当前代码的核心问题是调用resource_client.resources.create_or_update方法时参数不符合普通资源的更新要求:普通资源更新需要传入资源组、资源提供者命名空间、资源类型等多个标识参数,不能仅传入资源名。推荐使用更简便的begin_create_or_update_by_id方法,直接复用遍历得到的资源实例自带的ID属性完成更新。

修正后的可运行代码如下:

from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
import os

credential = AzureCliCredential()
# 订阅ID从环境变量读取即可,不要硬编码敏感信息
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
resource_client = ResourceManagementClient(credential, subscription_id)

# 提前定义需要新增的标签字典
tag_dict = {
    "环境": "生产",
    "归属": "运维团队"
}

# 遍历订阅下所有资源
for resource in resource_client.resources.list():
    # 仅给无标签的资源添加标签
    if not resource.tags:
        try:
            # 直接用资源ID调用更新接口,保留资源原有配置仅更新标签
            resource_client.resources.begin_create_or_update_by_id(
                resource_id=resource.id,
                api_version="2021-04-01",
                parameters={
                    "location": resource.location,
                    "tags": tag_dict
                }
            ).result()
            print(f"资源{resource.name}标签更新成功")
        except Exception as e:
            print(f"资源{resource.name}更新失败,错误信息:{str(e)}")

关键说明

  • begin_create_or_update_by_id是异步方法,需要调用.result()等待执行完成,否则会出现操作未生效的问题
  • 如果需要保留资源原有标签,仅追加新标签,可以将参数中的tags字段修改为tags = {**(resource.tags or {}), **tag_dict}
  • 部分特殊Azure资源(如Azure AD关联资源、部分经典架构资源)不支持标签操作,添加异常捕获可以避免批量更新中途中断
  • 不要在代码中硬编码订阅ID、密钥等敏感信息,统一从环境变量或安全配置服务读取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:57:03