Appliquer des étiquettes avec Bicep

Cet article explique comment utiliser Bicep pour ajouter des étiquettes à des ressources, des groupes de ressources et des abonnements pendant le déploiement. Pour obtenir les recommandations et limitations des balises, consultez Utiliser des balises pour organiser vos ressources Azure et votre hiérarchie de gestion.

Notes

Les étiquettes que vous appliquez au travers d’un fichier Bicep remplacent toutes les étiquettes existantes.

Appliquer les valeurs

L’exemple suivant déploie un compte de stockage avec trois étiquettes. Deux des étiquettes (Dept et Environment) sont définies sur des valeurs littérales. Une étiquette (LastDeployed) a pour valeur un paramètre dont la valeur par défaut est la date actuelle.

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
  }
}

Appliquer un objet

Vous pouvez définir un paramètre d’objet qui stocke plusieurs balises et appliquer cet objet à l’élément de balise. Cette approche offre plus de souplesse que l’exemple précédent, car l’objet peut avoir des propriétés différentes. Chaque propriété de l’objet devient une balise distincte pour la ressource. L’exemple suivant illustre un paramètre nommé tagValues appliqué à l’élément de balise.

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
}

Analyser une chaîne JSON

Pour stocker plusieurs valeurs dans une seule balise, appliquez une chaîne JSON qui représente les valeurs. La chaîne JSON complète est stockée sous la forme d’une balise ne pouvant pas dépasser 256 caractères. L’exemple illustre une balise unique nommée CostCenter qui contient plusieurs valeurs d’une chaîne 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"}'
  }
}

Appliquer des balises à partir d’un groupe de ressources

Pour appliquer des balises d’un groupe de ressources à une ressource, utilisez la fonction resourceGroup(). Lorsque vous obtenez la valeur de balise, utilisez la syntaxe tags[tag-name] au lieu de la syntaxe tags.tag-name, car certains caractères ne sont pas correctement analysés dans la notation par points.

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']
  }
}

Appliquer des étiquettes à des groupes de ressources ou à des abonnements

Vous pouvez ajouter des étiquettes à un groupe de ressources ou à un abonnement en déployant le type de ressource Microsoft.Resources/tags. Vous pouvez appliquer les étiquettes au groupe de ressources ou à l’abonnement cible que vous souhaitez déployer. Chaque fois que vous déployez le modèle, vous remplacez les étiquettes précédentes.

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

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

Le Bicep suivant ajoute les étiquettes d’un objet à l’abonnement sur lequel il est déployé. Pour plus d’informations sur les déploiements dans des abonnements, consultez Créer des groupes de ressources et des ressources au niveau de l’abonnement.

targetScope = 'subscription'

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

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

Étapes suivantes