Поделиться через


Применение тегов с помощью 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
  }
}

Дальнейшие действия