Aracılığıyla paylaş


Bicep kullanarak etiketleri uygulama

Bu makalede, dağıtım sırasında kaynakları, kaynak gruplarını ve abonelikleri etiketlemek için Bicep'in nasıl kullanılacağı açıklanmaktadır. Etiket önerileri ve sınırlamaları için bkz . Azure kaynaklarınızı ve yönetim hiyerarşinizi düzenlemek için etiketleri kullanma.

Dikkat

Bir Bicep dosyası aracılığıyla uyguladığınız etiketler, kaynakta var olan etiketlerin yerini alır. Mevcut etiketleri korumak istiyorsanız bunları şablona açıkça eklemeniz gerekir.

Değerleri uygulama

Aşağıdaki örnekte üç etiketli bir depolama hesabı dağıtılır. Etiketlerin ikisi (Dept ve Environment) sabit değerlere ayarlanmış. Bir etiket (LastDeployed), varsayılan olarak geçerli tarih olan bir parametreye ayarlanır.

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

Nesne uygula

Çeşitli etiketleri depolayan bir nesne parametresi tanımlayabilir ve bu nesneyi etiket öğesine uygulayabilirsiniz. Nesne farklı özelliklere sahip olabileceğinden bu yaklaşım önceki örnekten daha fazla esneklik sağlar. Nesnedeki her özellik, kaynak için ayrı bir etiket haline gelir. Aşağıdaki örnekte, etiket öğesine uyguladığınız adlı tagValues bir parametre vardır.

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
}

JSON dizesi uygulama

Çok sayıda değeri tek bir etikete depolamak için, değerleri temsil eden bir JSON dizesi uygulayın. JSON dizesinin tamamı, 256 karakteri geçemeyecek tek bir etiket olarak depolanır. Aşağıdaki örnekte bir JSON dizesindeki çok sayıda değeri içeren CostCenter adlı tek bir etiket kullanılmaktadır:

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

Kaynak grubundan etiketleri uygula

Bir kaynak grubundan kaynağa etiket uygulamak için resourceGroup() işlevini kullanın. Etiket değerini aldığınızda, bazı karakterler nokta notasyonunda doğru ayrıştırılmadığından dolayı tags[tag-name] söz dizimi yerine tags.tag-name söz dizimini kullanın.

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

Kaynak gruplarına veya aboneliklere etiket uygulama

Microsoft.Resources/tags kaynak türünü dağıtarak bir kaynak grubuna veya aboneliğe etiket ekleyebilirsiniz. Etiketleri dağıtmak istediğiniz hedef kaynak grubuna veya aboneliğe uygulayabilirsiniz. Şablonu her dağıttığınızda, önceki etiketleri değiştirirsiniz.

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

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

Aşağıdaki Bicep, bir nesnedeki etiketleri dağıttığınız aboneliğe ekler. Abonelik dağıtımları hakkında daha fazla bilgi için Abonelik düzeyinde kaynak grupları ve kaynaklar oluşturma bölümüne bakı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
  }
}

Etiketleri Okuma

Mevcut etiketleri aşağıdaki yaklaşımlarla okuyabilirsiniz.

Uyarı

tags Etiket ayarlanmadıysa kaynak üzerindeki Microsoft.Resources/tags özelliği ayarlanmaz. Hataları önlemek için .? üzerinde safe-dereference işlecini kullandığınızdan emin olun.

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

Sonraki adımlar