Share via


Aplicación de etiquetas con Bicep

En este artículo se describe cómo usar Bicep para etiquetar recursos, grupos de recursos y suscripciones durante la implementación. Para conocer las limitaciones y recomendaciones de las etiquetas, consulte Uso de etiquetas para organizar los recursos de Azure y jerarquía de administración.

Nota

Las etiquetas que aplique mediante el archivo de Bicep sobrescriben las existentes.

Aplicación de valores

En el ejemplo siguiente se implementa una cuenta de almacenamiento con tres etiquetas. Dos de las etiquetas (Dept y Environment) se establecen en valores literales. Una etiqueta (LastDeployed) se establece en un parámetro que tiene como valor predeterminado la fecha actual.

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

Aplicación de un objeto

Puede definir un parámetro de objeto que almacene varias etiquetas y aplicar ese objeto al elemento de etiqueta. Este enfoque proporciona más flexibilidad que el ejemplo anterior, porque el objeto puede tener propiedades diferentes. Cada propiedad del objeto se convierte en una etiqueta independiente para el recurso. El siguiente ejemplo tiene un parámetro denominado tagValues que se aplica al elemento de etiqueta.

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
}

Aplicación de una cadena JSON

Para almacenar muchos valores en una única etiqueta, aplique una cadena JSON que represente los valores. Toda la cadena JSON se almacena como una etiqueta que no puede superar los 256 caracteres. En el ejemplo siguiente se muestra una etiqueta denominada CostCenter que contiene varios valores de una cadena 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"}'
  }
}

Aplicación de etiquetas del grupo de recursos

Para aplicar etiquetas desde un grupo de recursos a un recurso, use la función resourceGroup(). Cuando obtenga el valor de la etiqueta, use la sintaxis tags[tag-name] en lugar de la sintaxis tags.tag-name, porque algunos caracteres no se analizan correctamente en la notación de puntos.

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

Aplicación de etiquetas a grupos de recursos o suscripciones

Puede agregar etiquetas a un grupo de recursos o una suscripción mediante la implementación del tipo de recurso Microsoft.Resources/tags. Puede aplicar las etiquetas al grupo de recursos de destino o a la suscripción que desea implementar. Cada vez que implemente la plantilla reemplaza cualquier etiqueta que haya aplicado anteriormente.

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

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

El Bicep siguiente agrega las etiquetas de un objeto a la suscripción en la que se implementa. Para más información sobre las implementaciones de suscripciones, consulte Creación de grupos de recursos y otros recursos en el nivel de suscripción.

targetScope = 'subscription'

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

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

Pasos siguientes