Applicare tag con Bicep

Questo articolo descrive come usare Bicep per applicare tag a risorse, gruppi di risorse e sottoscrizioni durante la distribuzione. Per le raccomandazioni sui tag e le limitazioni, vedere Usare i tag per organizzare le risorse di Azure e la gerarchia di gestione.

Nota

I tag applicati tramite un file Bicep sovrascrivono eventuali tag esistenti.

Applicare i valori

L'esempio seguente distribuisce un account di archiviazione con tre tag. Due dei tag (Dept e Environment) sono impostati su valori letterali. Un tag (LastDeployed) è impostato su un parametro che per impostazione predefinita corrisponde alla data corrente.

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

Applicare un oggetto

È possibile definire un parametro oggetto in cui vengono archiviati numerosi tag e applicare tale oggetto all'elemento tag. Questo approccio offre maggiore flessibilità rispetto all'esempio precedente perché l'oggetto può avere proprietà diverse. Ogni proprietà nell'oggetto diventa un tag separato per la risorsa. L'esempio seguente include un parametro denominato tagValues che viene applicato all'elemento tag.

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
}

Applicare una stringa JSON

Per memorizzare più valori in un singolo tag, è possibile applicare una stringa JSON che rappresenta tali valori. L'intera stringa JSON viene archiviata come un unico tag che non può superare i 256 caratteri. L'esempio seguente include un tag singolo denominato CostCenter che contiene più valori da una stringa 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"}'
  }
}

Applicare i tag dal gruppo di risorse

Per applicare i tag da un gruppo di risorse a una risorsa, usare la funzione resourceGroup(). Quando si ottiene il valore del tag, usare la sintassi tags[tag-name] anziché la sintassi tags.tag-name, perché alcuni caratteri non vengono analizzati correttamente nella notazione con il punto.

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

Applicare i tag a gruppi di risorse o sottoscrizioni

È possibile aggiungere tag a un gruppo di risorse o a una sottoscrizione distribuendo il tipo di risorsa Microsoft.Resources/tags. È possibile applicare i tag al gruppo di risorse o alla sottoscrizione di destinazione da distribuire. Ogni volta che si distribuisce il modello si sostituiscono i tag precedenti.

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

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

Il codice Bicep seguente aggiunge i tag da un oggetto alla sottoscrizione in cui viene distribuito. Per altre informazioni sulle distribuzioni delle sottoscrizioni, vedere Creare gruppi di risorse e risorse a livello di sottoscrizione.

targetScope = 'subscription'

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

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

Passaggi successivi