通过REST删除Azure资源/ resgroup上的所有标记

问题描述 投票:0回答:2

根据文档,我可以通过发出PATCH请求并在正文中设置resource group字段来更新resourcetags上的标签。这适用于设置一个或多个标签,或删除一个或多个标签(我只是将标记名留在请求之外)。

但是,当我尝试通过传递一个空的tags字段删除所有标记时:

PATCH https://management.azure.com/{....}

{
  "tags": {}
}

它不起作用。对于资源,我得到400错误Request must specify an account property to update,而对于资源组,它只是保持当前标记不变。

有没有办法通过REST删除资源/资源组上的所有标签?

r rest azure azure-resource-manager httr
2个回答
1
投票

您可以尝试使用此api:Resources - Update By Id,它应该同时适用于资源和资源组。我用资源组和资源(我的示例是一个Web应用程序)测试它,一切正常。

请求正文:

{
  tags: {}
}

注意:如果您收到NoRegisteredProviderFound错误,请更改api-version取决于错误消息。


0
投票

这实际上是due to a wart中httr包如何处理请求体中的空字段。如果正文是一个列表,则会在发送到主机之前以静默方式删除这些字段。

解决方法是事先将数据转换为JSON,而不是依赖于httr来执行此操作:

httr::PATCH("https://management.azure.com/{....}",
    body=jsonlite::toJSON(body, auto_unbox=TRUE),
    encoding="raw",
    ...)
© www.soinside.com 2019 - 2024. All rights reserved.