Condividi tramite


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 sostituiranno eventuali tag esistenti nella risorsa. Se si desidera conservare i tag esistenti, è necessario includerli in modo esplicito nel modello.

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. Nell'esempio seguente è presente un parametro denominato tagValues 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 distribuisci il modello, sostituisci 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
  }
}

Leggi tag

È possibile leggere i tag esistenti con gli approcci seguenti.

Avvertimento

La tags proprietà della Microsoft.Resources/tags risorsa non è impostata se non sono impostati tag. Per evitare errori, assicurarsi di usare l'operatore safe-dereference (.?) in properties.

resource readTags 'Microsoft.Resources/tags@2021-04-01' existing = {
  name: 'default'
}
var tagValue = readTags.properties?.tags?.myTag

// Equivalent to above:
var tagValue2 = reference(subscriptionResourceId('Microsoft.Resources/tags', 'default'), '2021-04-01', 'Full').properties.?tags.?myTag2

Passaggi successivi