Stosowanie tagów za pomocą Bicep

W tym artykule opisano, jak używać Bicep do tagowania zasobów, grup zasobów i subskrypcji podczas wdrażania. Aby uzyskać zalecenia i ograniczenia dotyczące tagów, zobacz Organizowanie zasobów platformy Azure i hierarchii zarządzania przy użyciu tagów.

Uwaga

Tagi stosowane za pośrednictwem pliku Bicep zastępują wszystkie istniejące tagi.

Stosowanie wartości

Poniższy przykład umożliwia wdrożenie konta magazynu z trzema tagami. Dwa tagi (Dept i Environment) są ustawione na wartości literału. Jeden tag (LastDeployed) jest ustawiony na parametr, który domyślnie jest ustawiony na bieżącą datę.

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

Stosowanie obiektu

Można zdefiniować parametr obiektu, który przechowuje kilka tagów i zastosować ten obiekt do elementu tagu. Takie podejście zapewnia większą elastyczność niż w poprzednim przykładzie, ponieważ obiekt może mieć różne właściwości. Każda właściwość obiektu będzie osobnym tagiem dla zasobu. Poniższy przykład zawiera parametr o nazwie tagValues , który jest stosowany do elementu tagu.

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
}

Stosowanie ciągu JSON

Aby przechowywać wiele wartości w jednym tagu, zastosuj ciąg JSON reprezentujący te wartości. Cały ciąg JSON jest przechowywany jako jeden tag, który nie może przekraczać 256 znaków. Poniższy przykład zawiera pojedynczy tag o nazwie CostCenter, który zawiera kilka wartości z ciągu 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"}'
  }
}

Stosowanie tagów z grupy zasobów

Aby zastosować tagi z grupy zasobów do zasobu, użyj funkcji resourceGroup(). Gdy uzyskasz wartość tagu, użyj tags[tag-name] składni zamiast tags.tag-name składni, ponieważ niektóre znaki nie są poprawnie analizowane w notacji kropkowej.

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

Stosowanie tagów do grup zasobów lub subskrypcji

Tagi można dodawać do grupy zasobów lub subskrypcji, wdrażając Microsoft.Resources/tags typ zasobu. Tagi można zastosować do docelowej grupy zasobów lub subskrypcji, którą chcesz wdrożyć. Za każdym razem, gdy wdrażasz szablon, zastępujesz wszystkie poprzednie tagi.

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

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

Poniższy kod Bicep dodaje tagi z obiektu do subskrypcji, w ramach których jest wdrażany. Aby uzyskać więcej informacji na temat wdrożeń subskrypcji, zobacz Tworzenie grup zasobów i zasobów na poziomie subskrypcji.

targetScope = 'subscription'

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

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

Następne kroki