标记资源 azure python sdk - 操作合并?

tag resources azure python sdk - operation merge?

我正在尝试弄清楚如何使用 PS 中的合并操作来标记资源。

powershell 中的示例 -

Update-AzTag -ResourceId $s.ResourceId -Tag $mergedTags -Operation Replace

我的代码在 python -

    # Tag the resource groups.
    resource_group_client.resource_groups.create_or_update(resource_group_name=rg["Resource-group-name"],parameters=
    {'location': rg['location'], 
        'tags':tags_dict,
        'Operation': 'Merge'})

如你所见,我正在尝试我的运气来放置 'operation' : 'merge' 但它不起作用...... 有什么帮助吗?

我们在 python create_or_update 函数中没有合并选项,请查看合并标签上的 documentation .

我们可以使用resource_group_params.update(tags={'hello': 'world'})一次更新所有标签。 下面是关于更新的代码

resource_group_params = {'location':'westus'} #adding location tag to a variable to pass it in create_or_update function
resource_group_params.update(tags={'hello': 'world'}) # adding tags (This will remove all the previous tags and update with the one which we are passing currently
client.resource_groups.create_or_update('azure-sample-group', resource_group_params)

但是文档中的上述代码将删除所有以前的标签并使用我们当前传递的标签进行更新。

这里我们的要求是 append/merge 标签,所以我创建了一个 python 脚本,我们可以在其中将标签附加到旧标签:

# Import the needed credential and management objects from the libraries.
from types import FunctionType
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
import os

from azure.mgmt.resource.resources.v2016_02_01 import operations

credential = AzureCliCredential()
subscription_id = "SUBSCRIPTION ID" #Add your subscription ID
resource_group = "RESOURCE_GRP_ID" #Add your resource group
resource_client = ResourceManagementClient(credential, subscription_id)
resource_list = resource_client.resource_groups.list()
for resource in resource_list:
    if resource.name == resource_group:
        appendtags = resource.tags #gathering old tags
        newTags = {"Name1": "first"} #new tags
        appendtags.update(newTags) # adding my new tags to old ones
        print(appendtags) 
        resource_client.resource_groups.create_or_update(resource_group_name=resource_group, parameters= {"location": "westus2", "tags": appendtags})

我已经用这段代码修复了它..它运行完美 - (你应该使用“update_at_scope”。

resource_group_client = ResourceManagementClient(credential, subscription_id=sub.subscription_id)


         body = {
             "operation" :  "Merge",
             "properties" : {
                 "tags" : 
                     tags_dict,
             }
         }

         resource_group_client.tags.update_at_scope(rg["Resource-id"] ,body)