Compartir a través de

使用 Bicep 应用标记

本文介绍如何在部署期间使用 Bicep 来标记资源、资源组和订阅。 有关标记建议和限制,请参阅使用标记来组织 Azure 资源和管理层次结构

注意

通过 Bicep 文件应用的标记会覆盖现有标记。

应用值

以下示例部署具有三个标记的存储帐户。 两个标记(DeptEnvironment)设置为文本值。 一个标记 (LastDeployed) 设置为默认值为当前日期的参数。

param location string = resourceGroup().location
param utcShort string = utcNow('d')

resource stgAccount 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: 'storage${uniqueString(resourceGroup().id)}'
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'Storage'
  tags: {
    Dept: 'Finance'
    Environment: 'Production'
    LastDeployed: utcShort
  }
}

应用对象

可以定义一个对象参数,用于存储多个标记,并将该对象应用于标记元素。 此方法比上一个示例更灵活,因为对象可以使用不同的属性。 对象中的每个属性会成为资源的单独标记。 以下示例有一个名为 tagValues 的参数,应用于标记元素。

param location string = resourceGroup().location
param tagValues object = {
  Dept: 'Finance'
  Environment: 'Production'
}

resource stgAccount 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: 'storage${uniqueString(resourceGroup().id)}'
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'Storage'
  tags: tagValues
}

应用 JSON 字符串

要将多个值存储在单个标记中,请应用表示这些值的 JSON 字符串。 整个 JSON 字符串存储为一个标记,该标记不能超过 256 个字符。 以下示例有一个名为 CostCenter 的标记,其中包含 JSON 字符串中的多个值:

param location string = resourceGroup().location

resource stgAccount 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: 'storage${uniqueString(resourceGroup().id)}'
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'Storage'
  tags: {
    CostCenter: '{"Dept":"Finance","Environment":"Production"}'
  }
}

应用资源组中的标记

若要将资源组中的标记应用于资源,请使用 resourceGroup() 函数。 获取标记值时,请使用 tags[tag-name] 语法而不是 tags.tag-name 语法,因为有些字符在点表示法中无法正确解析。

param location string = resourceGroup().location

resource stgAccount 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: 'storage${uniqueString(resourceGroup().id)}'
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'Storage'
  tags: {
    Dept: resourceGroup().tags['Dept']
    Environment: resourceGroup().tags['Environment']
  }
}

将标记应用到多个资源组或订阅

可以通过部署 Microsoft.Resources/tags 资源类型,将标记添加到资源组或订阅。 可以将标记应用于要部署的目标资源组或订阅。 每次部署模板时,都会替换任何以前的标记。

param tagName string = 'TeamName'
param tagValue string = 'AppTeam1'

resource applyTags 'Microsoft.Resources/tags@2021-04-01' = {
  name: 'default'
  properties: {
    tags: {
      '${tagName}': tagValue
    }
  }
}

以下 Bicep 会将对象中的标记添加到它部署到的订阅。 有关订阅部署的详细信息,请参阅在订阅级别创建资源组和资源

targetScope = 'subscription'

param tagObject object = {
  TeamName: 'AppTeam1'
  Dept: 'Finance'
  Environment: 'Production'
}

resource applyTags 'Microsoft.Resources/tags@2021-04-01' = {
  name: 'default'
  properties: {
    tags: tagObject
  }
}

后续步骤