Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede Bicep dosyasının yapısı ve söz dizimi açıklanmaktadır. Dosyanın farklı bölümlerini ve bu bölümlerde kullanılabilen özellikleri sunar.
Bicep dosyası oluşturma işleminde size yol gösteren adım adım öğretici için bkz . Hızlı Başlangıç: Visual Studio Code ile Bicep dosyaları oluşturma.
Bilinen sınırlamalar
- Bicep dili kavramını
apiProfiledesteklemez. Bu kavram, her kaynak türü için tek birapiProfile'yi bir kümeyeapiVersioneşleştirir. - Kullanıcı tanımlı işlevler şu anda desteklenmiyor. Deneysel bir özelliğe şu anda erişilebilir. Daha fazla bilgi için bkz . Bicep'te kullanıcı tanımlı işlevler.
- Bazı Bicep özellikleri için ara dilde (Azure Resource Manager JSON şablonları) karşılık gelen bir değişiklik gerekir. Ürün ekibi, tüm gerekli güncelleştirmeler genel Azure'a dağıtıldıktan sonra bu özellikleri kullanılabilir olarak duyurur. Azure Stack gibi farklı bir ortam kullanıyorsanız özelliğin kullanılabilirliği gecikmeli olabilir. Bicep özelliği yalnızca ara dil de bu ortamda güncelleştirildikten sonra kullanılabilir.
Bicep biçimi
Bicep bildirim temelli bir dildir ve bu da öğelerin herhangi bir sırada görünebileceği anlamına gelir. Kesinlik temelli dillerden farklı olarak, öğelerin sırası dağıtımın nasıl işlendiğini etkilemez.
Bicep dosyasında aşağıdaki öğeler bulunur:
#<directive-name> <argument> [<argument> ...]
@<decorator>(<argument>)
metadata <metadata-name> = ANY
targetScope = '<scope>'
@<decorator>(<argument>)
type <user-defined-data-type-name> = <type-expression>
@<decorator>(<argument>)
func <user-defined-function-name> (<argument-name> <data-type>, <argument-name> <data-type>, ...) <function-data-type> => <expression>
@<decorator>(<argument>)
param <parameter-name> <parameter-data-type> = <default-value>
@<decorator>(<argument>)
var <variable-name> = <variable-value>
@<decorator>(<argument>)
resource <resource-symbolic-name> '<resource-type>@<api-version>' = {
<resource-properties>
}
@<decorator>(<argument>)
module <module-symbolic-name> '<path-to-file>' = {
name: '<linked-deployment-name>'
params: {
<parameter-names-and-values>
}
}
@<decorator>(<argument>)
output <output-name> <output-data-type> = <output-value>
Aşağıdaki örnekte bu öğelerin bir uygulaması gösterilmektedir:
metadata description = 'Creates a storage account and a web app'
@description('The prefix to use for the storage account name.')
@minLength(3)
@maxLength(11)
param storagePrefix string
param storageSKU string = 'Standard_LRS'
param location string = resourceGroup().location
var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
}
module webModule './webApp.bicep' = {
name: 'webDeploy'
params: {
skuName: 'S1'
location: location
}
}
Meta veri
Bicep'teki meta veriler, Bicep dosyalarınıza ekleyebileceğiniz yazılmamış bir değerdir. Meta veriler, Bicep dosyalarınız hakkında ad, açıklama, yazar ve oluşturma tarihi gibi ek bilgiler sağlar.
Hedef kapsam
Varsayılan hedef kapsamıdır resourceGroup. Kaynak grubu düzeyinde dağıtım yaparsanız, Bicep dosyanızda hedef kapsamı ayarlamanız gerekmez.
İzin verilen değerler şunlardır:
-
resourceGroup: kaynak grubu dağıtımları için kullanılan varsayılan değer. -
subscription: abonelik dağıtımları için kullanılır. -
managementGroup: yönetim grubu dağıtımları için kullanılır. -
tenant: kiracı dağıtımları içinkullanılır.
Modülde, Bicep dosyasının geri kalanının kapsamından farklı bir kapsam belirtebilirsiniz. Daha fazla bilgi için bkz. modül kapsamını yapılandırma .
Parametreler
Farklı dağıtımlar için değişiklik göstermesi gereken değerler için parametreleri kullanın. Dağıtım sırasında bir değer sağlanmazsa kullanılan parametre için varsayılan bir değer tanımlayabilirsiniz.
Örneğin, bir kaynağın farklı boyutlarını belirtmek için bir SKU parametresi ekleyebilirsiniz. Teste mi yoksa üretime mi dağıttığınıza bağlı olarak farklı değerler geçirebilirsiniz.
param storageSKU string = 'Standard_LRS'
Bu parametre, Bicep dosyanızda kullanılabilir.
sku: {
name: storageSKU
}
Her parametre için bir veya daha fazla dekoratör ekleyebilirsiniz. Daha fazla bilgi için Dekoratörleri kullanma başlığına bkz.
Daha fazla bilgi için bkz Bicep'te Parametreler.
Değişkenler
Bicep dosyanızı daha okunabilir hale getirmek için bir değişkendeki karmaşık ifadeleri kapsülleyin. Örneğin, birkaç değeri birleştirerek oluşturduğunuz kaynak adı için bir değişken ekleyebilirsiniz.
var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
Karmaşık ifadeye ihtiyaç duyduğunuz her yerde bu değişkeni kullanın.
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: uniqueStorageName
Her değişken için bir veya daha fazla dekoratör ekleyebilirsiniz. Daha fazla bilgi için Dekoratörleri kullanma başlığına bkz.
Daha fazla bilgi için Bicep'te Değişkenler dokümanına bakın.
Kaynaklar
resource Dağıtılacak kaynağı tanımlamak için anahtar sözcüğünü kullanın. Kaynak bildiriminiz kaynak için sembolik bir ad içerir. Kaynaktan bir değer almak için bu sembolik adı Bicep dosyasının diğer bölümlerinde kullanın.
Kaynak bildirimi, kaynak türünü ve API sürümünü içerir. Kaynak bildiriminin gövdesinde, kaynak türüne özgü özellikleri ekleyin.
resource stg 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
}
Her kaynak için bir veya daha fazla dekoratör ekleyebilirsiniz. Daha fazla bilgi için Dekoratörleri kullanma başlığına bkz.
Daha fazla bilgi için bkz: Bicep'te kaynak bildirimi.
Bazı kaynakların ebeveyn/çocuk ilişkisi vardır. Alt kaynağı, ana kaynağın içinde veya dışında tanımlayabilirsiniz.
Aşağıdaki örnekte, ana kaynak içindeki bir alt kaynağın nasıl tanımlanacağı gösterilmektedir. Depolama hesabı içinde tanımlanan bir alt kaynağa (dosya hizmeti) sahip bir depolama hesabı içerir. Dosya hizmetinin içinde tanımlanmış bir alt kaynak (paylaşım) da vardır.
resource storage 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
resource service 'fileServices' = {
name: 'default'
resource share 'shares' = {
name: 'exampleshare'
}
}
}
Sonraki örnekte, ana kaynağın dışında bir alt kaynağın nasıl tanımlanacağı gösterilmektedir. Üst/alt ilişkiyi tanımlamak için ebeveyn özelliğini kullanırsınız. Aynı üç kaynak tanımlanır.
resource storage 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: 'examplestorage'
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
resource service 'Microsoft.Storage/storageAccounts/fileServices@2025-06-01' = {
name: 'default'
parent: storage
}
resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2025-06-01' = {
name: 'exampleshare'
parent: service
}
Daha fazla bilgi için Bicep'te alt kaynaklar için ad ve tür ayarlama bölümüne bakın.
Modül
Modüller, bir Bicep dosyasındaki kodu diğer Bicep dosyalarında yeniden kullanmanıza olanak tanır. Modül bildiriminde yeniden kullanmak üzere dosyaya bağlanırsınız. Bicep dosyasını dağıttığınızda, modüldeki kaynakları da dağıtırsınız.
module webModule './webApp.bicep' = {
name: 'webDeploy'
params: {
skuName: 'S1'
location: location
}
}
Sembolik ad, modüle dosyanın başka bir yerinden başvurmanızı sağlar. Örneğin, sembolik adı ve çıkış değerinin adını kullanarak bir modülden çıkış değeri alabilirsiniz.
Her modül için bir veya daha fazla dekoratör ekleyebilirsiniz. Daha fazla bilgi için Dekoratörleri kullanma başlığına bkz.
Daha fazla bilgi için Bicep modüllerini kullanma'ya bakın.
Çıkışlar
Dağıtım işlemlerinden değerleri geri döndürmek için çıktıları kullanın. Genellikle, başka bir işlem için bu değeri yeniden kullanmanız gerektiğinde dağıtılan bir kaynaktan bir değer döndürürsiniz.
output storageEndpoint object = stg.properties.primaryEndpoints
Her çıkış için bir veya daha fazla dekoratör ekleyebilirsiniz. Daha fazla bilgi için Dekoratörleri kullanma başlığına bkz.
Daha fazla bilgi için Bicep'te Çıkışlar kısmına bakın.
Türler
Kullanıcı tanımlı veri türlerini tanımlamak için deyimini type kullanın.
param location string = resourceGroup().location
type storageAccountSkuType = 'Standard_LRS' | 'Standard_GRS'
type storageAccountConfigType = {
name: string
sku: storageAccountSkuType
}
param storageAccountConfig storageAccountConfigType = {
name: 'storage${uniqueString(resourceGroup().id)}'
sku: 'Standard_LRS'
}
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: storageAccountConfig.name
location: location
sku: {
name: storageAccountConfig.sku
}
kind: 'StorageV2'
}
Kullanıcı tanımlı her veri türü için bir veya daha fazla dekoratör ekleyebilirsiniz. Daha fazla bilgi için Dekoratörleri kullanma başlığına bkz.
Daha fazla bilgi için bkz. Bicep'te kullanıcı tanımlı veri türleri.
İşlevler
Bicep dosyanızda kendi işlevlerinizi oluşturabilir ve ayrıca Bicep dosyalarınızda otomatik olarak kullanılabilen standart Bicep işlevlerini kullanabilirsiniz. Bicep dosyalarınızda sürekli olarak kullandığınız karmaşık ifadeleriniz olduğunda kendi işlevlerinizi oluşturun.
func buildUrl(https bool, hostname string, path string) string => '${https ? 'https' : 'http'}://${hostname}${empty(path) ? '' : '/${path}'}'
output azureUrl string = buildUrl(true, 'microsoft.com', 'azure')
Daha fazla bilgi için bkz . Bicep'te kullanıcı tanımlı işlevler.
Dekoratörler
Aşağıdaki öğelerin her birine bir veya daha fazla dekoratör ekleyin:
Aşağıdaki tabloda dekoratörler listelenir:
| Dekoratör | Öğeye uygula | Veri türüne uygula | Bağımsız değişken | Açıklama |
|---|---|---|---|---|
| İzinli | param | 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.
param deyimlerinde birleşim türü söz dizimlerini de kullanabilirsiniz. |
| yığınBoyutu | modül, kaynak | Yok | tamsayı | Örnekleri sıralı olarak dağıtılacak şekilde ayarlayın. |
| açıklama | func, param, modül, çıkış, kaynak, tür, var | tümü | Dize | Öğeler için açıklamalar sağlayın. Açıklama metni için Markdown biçimli metin kullanın. |
| Ayrımcı | param, type, output | nesne | Dize | 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. |
| dışarı aktarma | func, type, var | tümü | yok | Başka bir Bicep dosyasının öğeyi içeri aktarabileceğini gösterir. |
| maksimumUzunluk | param, çıkış, tür | dizi, dize | int | Dize ve dizi öğeleri için uzunluk üst sınırı. Değer kapsayıcıdır. |
| maksimum değer | param, çıkış, tür | int | int | Tamsayı öğelerinin en büyük değeri. Bu değer kapsam dahiline alınmıştır. |
| meta veriler | func, output, param, type | tümü | nesne | Öğelere uygulanacak özel özellikler. Açıklama dekoratörüne eşdeğer bir açıklama özelliği içerebilir. |
| minimum uzunluk | param, çıkış, tür | dizi, dize | int | Dize ve dizi öğeleri için en düşük uzunluk. Değer kapsayıcıdır. |
| minDeğer | param, çıkış, tür | int | int | Tamsayı öğelerinin en küçük değeri. Bu değer kapsam dahiline alınmıştır. |
| mühürlü | param, type, output | nesne | yok | Kullanıcı tanımlı veri türünün özellik adının yazım hatası olasılığı yüksek olduğunda, BCP089'yi uyarıdan hataya yükseltin. Daha fazla bilgi için bkz Hata düzeyini yükseltme. |
| güvenli | param, tür | dize, nesne | yok | parametresini güvenli olarak işaretler. Güvenli bir parametrenin değeri dağıtım geçmişine ve günlüklere kaydedilmez. Daha fazla bilgi için bkz . Güvenli dizeler ve nesneler. |
Yönergeler
Bicep, lint uyarılarını veya uyarı tanılama iletilerini gizleme gibi dosya içindeki belirli davranışları denetlemek için yönergeleri (pragmalar) destekler. Yönergeler # karakteriyle başlar.
#<directive-name> <argument1> [<argument2> ... ]
Yönergeden sonra en az bir tanımlayıcı belirtmeniz gerekir. Herhangi bir tanımlayıcı sağlamazsanız, derleyici bir hata bildirir. Yönergeden sonra belirttiğiniz tanımlayıcılar şu ifadelere başvurabilir:
-
Bicep derleyici tanılamaları, örneğin
BCP138 -
Bicep linter kuralları, örneğin
no-unused-params
Bağımsız değişkenleri boşluk kullanarak ayırırsınız. Linter kuralları ve tanılama kodları büyük/küçük harfe duyarlıdır.
Bicep şu anda üç yönerge türünü destekler:
-
#disable-next-line— yalnızca sonraki satır için bir veya daha fazla tanılamayı devre dışı bırakır -
#disable-diagnostics— tüm dosya için veya yeniden etkinleştirilene kadar bir veya daha fazla tanılamayı devre dışı bırakır -
#restore-diagnostics— önceden devre dışı bırakılmış tanılamayı yeniden etkinleştirir
Aşağıdaki örnek birden çok tanılamayı ve kuralı gizler:
#disable-diagnostics no-unused-vars BCP335
var location = 'eastus'
param storageCount int
resource accounts 'Microsoft.Storage/storageAccounts@2025-06-01' = [for i in range(0, storageCount): if (i % 2 == 0) {
name: 'sa0820${i}'
location: resourceGroup().location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}]
Yönergeleri tasarrufla ve yalnızca bir tanılama veya lint kuralını gözden geçirip kasıtlı olarak bastırdığınızda kullanın. Aşırı kullanım, şablonun okunabilirliğini ve sürdürülebilirliğini azaltabilir. Kuralların veya tanılama kodlarının bu satıra neden uygulanmayacağını açıklayan bir açıklama ekleyin.
Döngüler
Bicep dosyanıza yinelemeli döngüler ekleyerek birden çok kopyasını tanımlayın:
- Kaynak
- Modül
- Değişken
- Bir özellik
- Bir çıktı
Döngü tanımlamak için ifadeyi for kullanın.
param moduleCount int = 2
module stgModule './example.bicep' = [for i in range(0, moduleCount): {
name: '${i}deployModule'
params: {
}
}]
Dizi, nesne veya tamsayı dizini üzerinde yineleme yapabilirsiniz.
Daha fazla bilgi için Bicep'teki yinelemeli döngüler bölümüne bakın.
Koşullu dağıtım
Koşullu dağıtım için Bicep dosyanıza bir kaynak veya modül ekleyebilirsiniz. Dağıtım sırasında koşul değerlendirilir ve sonuç kaynağın veya modülün dağıtılıp dağıtılmadığını belirler.
if Koşullu dağıtım tanımlamak için ifadesini kullanın.
param deployZone bool
resource dnsZone 'Microsoft.Network/dnsZones@2023-07-01-preview' = if (deployZone) {
name: 'myZone'
location: 'global'
}
Daha fazla bilgi için bkz. if ifadesiyle Bicep'te koşullu dağıtımlar.
Whitespace
Bicep dosyaları boşlukları ve sekmeleri dikkate almaz.
Bicep yeni satırlara duyarlıdır. Örneğin:
resource sa 'Microsoft.Storage/storageAccounts@2025-06-01' = if (newOrExisting == 'new') {
...
}
Şu şekilde yazamazsınız:
resource sa 'Microsoft.Storage/storageAccounts@2025-06-01' =
if (newOrExisting == 'new') {
...
}
Nesneleri vedizileri birden çok satırda tanımlayabilirsiniz.
Açıklamalar
Tek satırlı açıklamalar için // veya çok satırlı açıklamalar için /* ... */ kullanın.
Aşağıdaki örnekte tek satırlık bir açıklama gösterilmektedir.
// This is your primary NIC.
resource nic1 'Microsoft.Network/networkInterfaces@2025-01-01' = {
...
}
Aşağıdaki örnekte çok satırlı bir açıklama gösterilmektedir.
/*
This Bicep file assumes the key vault already exists and
is in same subscription and resource group as the deployment.
*/
param existingKeyVaultName string
Çok satırlı bildirimler
Artık işlev, dizi ve nesne bildirimlerinde birden çok satır kullanabilirsiniz. Bu özellik için Bicep CLI sürüm 0.7.X veya üzeri gerekir.
Aşağıdaki örnekte tanım resourceGroup() birden çok satıra ayrılmıştır.
var foo = resourceGroup(
mySubscription,
myRgName)
Çok satırlı bildirim örnekleri için bkz. diziler ve nesneleri.
İlgili içerik
- Bicep'e giriş için bkz. Bicep nedir?
- Bicep veri türleri için Veri türleri bölümüne bkz.