使用 Bicep 应用标记
本文介绍如何在部署期间使用 Bicep 来标记资源、资源组和订阅。 有关标记建议和限制,请参阅使用标记来组织 Azure 资源和管理层次结构。
注意
通过 Bicep 文件应用的标记会覆盖现有标记。
应用值
以下示例部署具有三个标记的存储帐户。 两个标记(Dept
和 Environment
)设置为文本值。 一个标记 (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
}
}
后续步骤
- 并非所有资源类型都支持标记。 若要确定是否可以将标记应用到资源类型,请参阅 Azure 资源的标记支持。
- 有关标记建议和限制,请参阅使用标记来组织 Azure 资源和管理层次结构。