Aracılığıyla paylaş


Bicep parametreleri

Bu makalede, bir Bicep dosyasında parametrelerin nasıl tanımlanacağı ve kullanılacağı açıklanmaktadır. Parametreler için farklı değerler sağlayarak, farklı ortamlar için bir Bicep dosyasını yeniden kullanabilirsiniz.

Azure Resource Manager, dağıtım işlemlerini başlatmadan önce parametre değerlerini çözümler. parametresi nerede kullanılırsa kullansın Resource Manager parametresini çözümlenen değerle değiştirir.

Her parametre veri türlerinden birine ayarlanmalıdır.

Bicep en fazla 256 parametreye izin verir. Daha fazla bilgi için bkz . Şablon sınırları.

Parametre en iyi yöntemleri için bkz. Parametreler.

Parametreleri tanımla

Her parametrenin bir adı ve veri türü vardır. İsteğe bağlı olarak, parametresi için varsayılan bir değer sağlayabilirsiniz.

@<decorator>(<argument>)
param <parameter-name> <parameter-data-type> = <default-value>

Parametrenin adı değişken, kaynak, çıkış veya aynı kapsamdaki başka bir parametreyle aynı olamaz.

Aşağıdaki örnekte parametrelerin temel bildirimleri gösterilmektedir.

param demoString string
param demoInt int
param demoBool bool
param demoObject object
param demoArray array

Anahtar param sözcüğü dosyalarda .bicepparamda kullanılır. Bicep dosyalarında tanımlandığından .bicepparam dosyalarında veri türünü belirtmeniz gerekmez.

param <parameter-name> = <value>

Kullanıcı tanımlı tür ifadeleri bir param deyiminin tür yan tümcesi olarak kullanılabilir. Örneğin:

param storageAccountConfig {
  name: string
  sku: string
}

Daha fazla bilgi için, Bicep'te Kullanıcı tarafından tanımlanan veri türlerine bakın.

Varsayılan değerleri ayarlama

Parametre için varsayılan bir değer belirtebilirsiniz. Varsayılan değer, dağıtım sırasında bir değer sağlanmayan durumlarda kullanılır.

param demoParam string = 'Contoso'

İfadeleri varsayılan değerle kullanabilirsiniz. İfadelere diğer parametre özellikleriyle izin verilmez. reference işlevini veya parametreler bölümündeki list işlevlerin hiçbirini kullanamazsınız. Bu işlevler kaynağın çalışma zamanı durumunu alır ve parametreler çözümlendiğinde dağıtımdan önce yürütülemez.

param location string = resourceGroup().location

Varsayılan bir değer oluşturmak için başka bir parametre değeri kullanabilirsiniz. Aşağıdaki şablon, site adından bir barındırma planı adı oluşturur.

param siteName string = 'site${uniqueString(resourceGroup().id)}'
param hostingPlanName string = '${siteName}-plan'

output siteNameOutput string = siteName
output hostingPlanOutput string = hostingPlanName

Ancak, bir değişkene varsayılan değer olarak başvuramazsınız.

Dekoratörleri kullanma

Parametreler kısıtlamalar veya meta veriler için dekoratörleri kullanır. Dekoratörler @expression biçimindedir ve parametrenin bildiriminin üstüne yerleştirilir. Aşağıdaki tabloda parametreler için kullanılabilir dekoratörler gösterilmektedir:

Dekoratör Başvur Tartışma Açıklama
Izin verilen tümü dizi Kullanıcının doğru değerler sağladığından emin olmak için bu dekoratörü kullanın. Bu dekoratöre yalnızca param deyimlerinde izin verilir. Bir özelliğin veya type deyiminde output önceden tanımlanmış bir değer kümesinden biri olması gerektiğini bildirmek için birleşim türü söz dizimini kullanın. Birleşim türü söz dizimi de param deyimlerde kullanılabilir.
Açıklama tümü String parametresinin nasıl kullanılacağını açıklayan metin. Açıklama, Azure portalında kullanıcılara görüntülenir.
Ayrıştırıcı nesne String Doğru alt sınıfın tanımlandığından ve yönetildiğinden emin olmak için bu dekoratörü kullanın. Daha fazla bilgi için Özel etiketli birleşim veri türü'ne bakın.
maxLength dizi, dize Int Dize ve dizi parametreleri için uzunluk üst sınırı. Değer kapsayıcıdır.
maxValue Int Int Tamsayı parametresi için en büyük değer. Bu değer kapsam dahiline alınmıştır.
meta veriler tümü nesne parametresine uygulanacak özel özellikler. Açıklama dekoratörüne eşdeğer olan bir açıklama özelliği içerebilir.
minLength dizi, dize Int Dize ve dizi parametreleri için en düşük uzunluk. Değer kapsayıcıdır.
minValue Int Int Tamsayı parametresi için en düşük değer. Bu değer kapsam dahiline alınmıştır.
mühürlenmiş nesne yok BCP089'ı, bir kullanıcı tanımlı veri türünün özellik adının yazım hatası olabileceği durumlarda, bir uyarıdan hataya yükseltin. Daha fazla bilgi için Hata düzeyini yükselt başlıklı bölüme bakın.
güvenli dize, nesne yok parametresini güvenli olarak işaretler. Güvenli parametrenin değeri dağıtım geçmişine kaydedilmez ve günlüğe de alınmaz. Daha fazla bilgi için bkz . Güvenli dizeler ve nesneler.

Dekoratörler sys ad alanı içindedir. Dekoratörü aynı ada sahip başka bir öğeden ayırt etmeniz gerekiyorsa, dekoratörün başına sys yazın. Örneğin, Bicep dosyanız description adlı bir parametre içeriyorsa, description dekoratörü kullanılırken sys ad alanını eklemeniz gerekir.

@sys.description('The name of the instance.')
param name string
@sys.description('The description of the instance to display.')
param description string

İzin verilen değerler

Bir parametre için izin verilen değerler tanımlayabilirsiniz. Bir dizide izin verilen değerleri sağlarsınız. İzin verilen değerlerden biri olmayan parametre için bir değer geçirilirse dağıtım doğrulama sırasında başarısız olur.

@allowed([
  'one'
  'two'
])
param demoEnum string

Dizi parametresi için izin verilen değerler tanımlarsanız, gerçek değer izin verilen değerlerin herhangi bir alt kümesi olabilir.

Açıklama

Kullanıcıların sağlayabilecekleri değeri anlamasına yardımcı olmak için parametresine bir açıklama ekleyin. Kullanıcı şablonu Azure portalı üzerinden dağıttığında, açıklama metni otomatik olarak bu parametre için ipucu olarak kullanılır. Yalnızca metin parametre adından çıkarılabilenden daha fazla bilgi sağladığında açıklama ekleyin.

@description('Must be at least Standard_A3 to support 2 NICs.')
param virtualMachineSize string = 'Standard_DS1_v2'

Markdown biçimli metin, açıklama metni için kullanılabilir:

@description('''
Storage account name restrictions:
- Storage account names must be between 3 and 24 characters in length and can only contain numbers and lowercase letters.
- Your storage account name must be unique within Azure. No two storage accounts can have the same name.
''')
@minLength(3)
@maxLength(24)
param storageAccountName string

İmlecinizi Visual Studio Code storageAccountName üzerine getirdiğinizde, biçimlendirilmiş metni görürsünüz:

VS Code'da Markdown biçimli metin kullanma

Metnin düzgün Markdown biçimlendirmesine uydığından emin olun; aksi takdirde, işlendiğinde doğru görüntülenmeyebilir.

Ayrıştırıcı

Bkz. Özel etiketli birleşim veri türü.

Tamsayı kısıtlamaları

Tamsayı parametreleri için en düşük ve en yüksek değerleri ayarlayabilirsiniz. Bir veya iki kısıtlama ayarlayabilirsiniz.

@minValue(1)
@maxValue(12)
param month int

Uzunluk kısıtlamaları

Dize ve dizi parametreleri için en düşük ve en yüksek uzunlukları belirtebilirsiniz. Bir veya iki kısıtlama ayarlayabilirsiniz. Dizeler için uzunluk, karakter sayısını gösterir. Diziler için uzunluk, dizideki öğe sayısını gösterir.

Aşağıdaki örnekte iki parametre bildirmektedir. Bir parametre, 3 ile 24 karakter arasında olması gereken bir depolama hesabı adıdır. Diğer parametre, 1 ile 5 arasında öğeye sahip olması gereken bir dizidir.

@minLength(3)
@maxLength(24)
param storageAccountName string

@minLength(1)
@maxLength(5)
param appNames array

Meta veri

Bir parametreye uygulamak istediğiniz özel özellikleriniz varsa, bir meta veri dekoratörü ekleyin. Meta veriler içinde, özel adlara ve değerlere sahip bir nesne tanımlayın. Meta veriler için tanımladığınız nesne herhangi bir adın ve türün özelliklerini içerebilir.

Bu dekoratörü, açıklamaya eklenmesi anlamlı olmayan parametrelere ilişkin bilgileri izlemek için kullanabilirsiniz.

@description('Configuration values that are applied when the application starts.')
@metadata({
  source: 'database'
  contact: 'Web team'
})
param settings object

Bir dekoratöre başka bir dekoratörle çakışan bir özellik sağladığınızda @metadata(), bu dekoratör @metadata() dekoratöründeki her şeyden daha önceliklidir, bu nedenle @metadata() değeri içindeki çakışan özellik gereksiz olur ve değiştirilir. Daha fazla bilgi için bkz. Linter kuralı - çakışan meta veri yok.

Mühürlü

Bkz . Hata düzeyini yükseltme.

Güvenli parametreler

Dize veya nesne parametrelerini güvenli olarak işaretleyebilirsiniz. Bir parametre @secure() ile donatıldığında, Azure Resource Manager parametre değerini hassas olarak değerlendirir ve bunun dağıtım geçmişinde, Azure portalında veya komut satırı çıkışlarında günlüğe kaydedilmesini veya görüntülenmesini önler.

@secure()
param demoPassword string

@secure()
param demoSecretObject object

Bu dekoratörle ilgili birkaç linter kuralı vardır: Güvenli parametre varsayılanı, İç içe dağıtımlarda güvenli parametreler, Parametrelerde gizli dizileri güvenli duruma getirmek.

Parametre kullanma

Parametrenin değerine başvurmak için parametre adını kullanın. Aşağıdaki örnekte anahtar kasası adı için parametre değeri kullanılmaktadır.

param vaultName string = 'keyVault${uniqueString(resourceGroup().id)}'

resource keyvault 'Microsoft.KeyVault/vaults@2025-05-01' = {
  name: vaultName
  ...
}

Dekoratör @secure() yalnızca dize veya nesne türündeki parametreler için geçerlidir, bunlar ARM şablonlarındaki secureString ve secureObject türleriyle uyumlu olduğundan. Dizileri veya sayıları güvenli bir şekilde geçirmek için bunları ya bir SecureObject içinde sarmalayın ya da SecureString olarak serileştirin.

Nesneleri parametre olarak kullanma

İlgili değerleri nesne olarak geçirerek düzenlemek daha kolay olabilir. Bu yaklaşım şablondaki parametre sayısını da azaltır.

Aşağıdaki örnekte nesne olan bir parametre gösterilmektedir. Varsayılan değer, nesne için beklenen özellikleri gösterir. Bu özellikler, dağıtılacak kaynağı tanımlarken kullanılır.

param vNetSettings object = {
  name: 'VNet1'
  location: 'eastus'
  addressPrefixes: [
    {
      name: 'firstPrefix'
      addressPrefix: '10.0.0.0/22'
    }
  ]
  subnets: [
    {
      name: 'firstSubnet'
      addressPrefix: '10.0.0.0/24'
    }
    {
      name: 'secondSubnet'
      addressPrefix: '10.0.1.0/24'
    }
  ]
}

resource vnet 'Microsoft.Network/virtualNetworks@2025-01-01' = {
  name: vNetSettings.name
  location: vNetSettings.location
  properties: {
    addressSpace: {
      addressPrefixes: [
        vNetSettings.addressPrefixes[0].addressPrefix
      ]
    }
    subnets: [
      {
        name: vNetSettings.subnets[0].name
        properties: {
          addressPrefix: vNetSettings.subnets[0].addressPrefix
        }
      }
      {
        name: vNetSettings.subnets[1].name
        properties: {
          addressPrefix: vNetSettings.subnets[1].addressPrefix
        }
      }
    ]
  }
}

Sonraki adımlar