使用API​​在Azure中创建/更新标签

时间:2019-12-18 03:14:35

标签: azure azure-devops

我们如何在天蓝色资源(VM,DB,功能应用程序)上创建新标签或更新现有标签。 AWS具有实例,图像。的create_tags。.azure中有这种方法吗?

谢谢

3 个答案:

答案 0 :(得分:2)

是的,您可以通过两种方式做到这一点。

(i) Using Powershell Cmdlet 下面添加新标签或使用新值更新现有标签。

Set-AzureRmResource -Tag @( @{ Name="tag_name"; Value="tag_value" }) -ResourceId <resource_id>

(ii)使用C#

using Microsoft.Azure.Management.Resources;
using Microsoft.Azure.Management.Resources.Models;       

//MyResourceOperation implemented interface IResourcesOperations 
MyResourceOperation resourceOpertion = new MyResourceOperation();

//Get a resource belonging to a resource group
Resource myResource = resourceOpertion.Get("resourceGroupName", "resourceProviderNamespace", "parentResourcePath", "resourceType", "resourceName", "apiVersion");

//update the assigned tag with a new value
myResource.Tags.Add("tagName", "updatedValue");

答案 1 :(得分:1)

如4c74356b41所述,您可以使用Azure rest Api为天蓝色资源创建标签。

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}?api-version=2019-08-01

对于下面的示例,我使用az rest cli为我的Azure SQL日期库创建标签。

az login --service-principal --username "<clientid>" --password "<clientpassword>" --tenant "<tenantid>"

$subscriptionId ="<subscriptionId >"
$resourceGroupName="<resourceGroupName>"

$uri = "/subscriptions/$subscriptionId/resourcegroups/$resourceGroupName/providers/Microsoft.Sql/servers/levi-sql-server/databases/levi_sql_database?api-version=2019-06-01-preview"

$body = '{\"tags\": {\"name\":\"firstdatabasetag\"},\"location\":\"westcentralus\"}'

az rest --method put --uri $uri --body $body

经过测试,我发现某些资源api可能不支持最新的api-version=2019-08-01。以上用于更新数据库标记的api仅支持api-version=2019-06-01-preview及更早版本。但是没有必要打错,如果使用了不受支持的api版本,则会收到警告。

有关调用天蓝色api的其他方法,您可以参考this blog

还有其他方法,例如azure powershell命令(如Sajeetharan所述)和az cli,可让您使用其更新命令来设置标签属性。

答案 2 :(得分:1)

试图解决几天特定Azure资源的标签问题,文档尚不清楚,无法理解如何使用该线程中的解决方案来做到这一点。

最终通过运行powershell命令进行相同的操作来弄清楚(具有更好的示例here文档,并使用fiddler捕获了API调用以找出所使用的格式。

使用我的解决方案更新线程,以便对其他人有用。

REST API文档在下面的链接中。我向Azure支持寻求帮助,但他们在过去1周没有回来。

https://docs.microsoft.com/en-us/rest/api/resources/tags/updateatscope

为虚拟机添加/编辑标签的示例。基本上需要使用PATCH操作。 PUT操作将替换所有现有标签。

修补程序https://management.azure.com/subscriptions/>subscriptionId resourcegrp VM名称

$Body = 

{ 
  "operation": "merge", 
  "properties": { 
    "tags": { 
      "testtag": "testvalue", 
      "testtag2": "", 
      "existingtag": "updatedtagvalue" 
    } 
  } 
} 

注意:“合并”操作对于合并或编辑标签很重要。 “删除”用于删除特定的现有标签,“替换”用于将现有标签替换为新标签。