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ında çıkış değerlerinin nasıl tanımlanacağı açıklanmaktadır. Dağıtılan kaynaklardan değer döndürmeniz gerektiğinde çıkışları kullanırsınız. Bicep dosyasındaki 64 çıkışla sınırlısınız. Daha fazla bilgi için bkz . Şablon sınırları.
Çıktıları tanımlama
Çıkış değeri tanımlama söz dizimi şöyledir:
output <name> <data-type or type-expression> = <value>
Bir çıktı, parametre, değişken, modül veya kaynakla aynı adı taşıyabilir. Her çıkış değeri, Bicep'te veri türleri veya kullanıcı tanımlı veri türlerinden birine çözümlenmelidir.
Aşağıdaki örnekte, dağıtılan bir kaynaktan bir özelliğin nasıl döndürüleceği gösterilmektedir. Örnekte, publicIP, Bicep dosyasında dağıtılan genel IP adresinin sembolik adıdır. Çıktı değeri, genel IP adresine ait tam nitelikli etki alanı adını alır.
output hostname string = publicIP.properties.dnsSettings.fqdn
Sonraki örnekte farklı türlerdeki çıkışların nasıl döndürüleceği gösterilmektedir:
output stringOutput string = deployment().name
output integerOutput int = length(environment().authentication.audiences)
output booleanOutput bool = contains(deployment().name, 'demo')
output arrayOutput array = environment().authentication.audiences
output objectOutput object = subscription()
Adında kısa çizgi bulunan bir özelliğin çıktısını almanız gerekiyorsa, noktalı virgül yerine adın çevresinde köşeli ayraç kullanın. Örneğin, ['property-name'] yerine .property-name kullanın.
var user = {
'user-name': 'Test Person'
}
output stringOutput string = user['user-name']
Aşağıdaki örnekte tür ifadesinin nasıl kullanılacağı gösterilmektedir:
param foo 'a' | 'b' = 'a'
output out 'a' | 'b' = foo
Dekoratörleri kullanma
Dekoratörler @expression formatında yazılır ve çıkışların üzerine yerleştirilir. Aşağıdaki tabloda çıkışlar için kullanılabilir dekoratörler gösterilmektedir:
| Dekoratör | Başvur | Tartışma | Açıklama |
|---|---|---|---|
| Açıklama | tümü | Dize | Bu, çıkış için açıklamalar sağlar. |
| Ayrıştırıcı | 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ız. |
| maxLength | dizi, dize | Int | Bu, dize ve dizi çıktılarına maksimum uzunluk sınırı belirler ve bu sınır dahil edilir. |
| maxValue | Int | Int | Bu, tamsayı çıkışı için azami değeri sağlar ve bu değer de dahil edilir. |
| meta veriler | tümü | nesne | Bu, çıkışa uygulanacak özel özellikler sağlar ve açıklama dekoratörüne eşdeğer bir açıklama özelliği içerebilir. |
| minLength | dizi, dize | Int | Bu, dize ve dizi çıkışları için asgari uzunluğu sağlar ve bu değere de dahil edilir. |
| minValue | Int | Int | Bu, tamsayı çıkışı için en düşük değeri sağlar ve değer dahil edilir. |
| 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 | Çıkışı güvenli olarak işaretler. Güvenli bir çıktının değeri, dağıtım geçmişine kaydedilmez ve günlüklerde de yer almaz. Daha fazla bilgi için bkz . Güvenli dizeler ve nesneler. |
Dekoratörler sys ad alanındadır. Dekoratörü aynı ada sahip başka bir öğeden ayırt etmeniz gerekiyorsa, dekoratörün önüne sys ekleyin. Örneğin, Bicep dosyanız description adlı bir parametre içeriyorsa, sys dekoratörünü kullanırken 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
Açıklama
Açıklama eklemek için çıkış bildirimlerine bir açıklama ekleyin. Örneğin:
@description('Conditionally output the endpoint.')
output endpoint string = deployStorage ? myStorageAccount.properties.primaryEndpoints.blob : ''
Açıklama metni için Markdown biçimli metin kullanılabilir.
Ayrıştırıcı
Bkz. Özel etiketli birleşim veri türü.
Tamsayı kısıtlamaları
Tamsayı çıkışları ve bir veya her iki kısıtlama için en düşük ve en yüksek değerleri ayarlayabilirsiniz.
var thisMonth = 3
@minValue(1)
@maxValue(12)
output month int = thisMonth
Uzunluk kısıtlamaları
Dize ve dizi çıkışları 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 çıkış bildirmektedir. Çıkışlardan biri, 3-24 karakter uzunluğunda olması gereken bir depolama hesabı adıdır. Diğer çıkış, 1 ila 5 öğe içermesi gereken bir dizidir.
var accountName = uniqueString(resourceGroup().id)
var appNames = [
'SyncSphere'
'DataWhiz'
'FlowMatrix'
]
@minLength(3)
@maxLength(24)
output storageAccountName string = accountName
@minLength(1)
@maxLength(5)
output applicationNames array = appNames
Meta veri
Çıktıya 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 eklemenin anlamlı olmadığı çıkış bilgilerini izlemek için kullanabilirsiniz.
var obj = {}
@description('Configuration values that are applied when the application starts.')
@metadata({
source: 'database'
contact: 'Web team'
})
output settings object = obj
Başka bir @metadata() dekoratörle çakışan bir özellik sağladığınızda, bu dekoratör, her zaman @metadata() dekoratöründeki her şeyden öncelikli olur. Buna karşılık, @metadata() değeri içindeki çakışan özellik yedeklidir ve değiştirilecektir. Daha fazla bilgi için bkz. Linter kuralı - çakışan meta veri yok.
Mühürlü
Bkz . Hata düzeyini yükseltme.
Güvenli çıkışlar
Bicep sürüm 0.35.1 ve üzeri ile dize veya nesne çıkışlarını güvenli olarak işaretleyebilirsiniz. Bir çıkış @secure() ile donatıldığında, Azure Resource Manager çıkış değerini gizli olarak değerlendirir ve bu değerin dağıtım geçmişinde, Azure portalında veya komut satırı çıktılarında kaydedilmesi ve görüntülenmesi engellenir.
@secure()
output demoPassword string
@secure()
output demoSecretObject object
Dekoratör @secure() yalnızca dize veya nesne türündeki çıkışlar 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.
Koşullu çıkış
Döndürülecek değer dağıtımdaki bir koşula bağlı olduğunda işlecini ? kullanın.
output <name> <data-type> = <condition> ? <true-value> : <false-value>
Genellikle, bir kaynağı koşullu olarak dağıttığınızda koşullu çıkış kullanırsınız. Aşağıdaki örnekte, yeni bir ip adresinin dağıtılıp dağıtılmadığına bağlı olarak genel IP adresi için kaynak kimliğinin koşullu olarak nasıl döndürüleceği gösterilmektedir.
Bicep'te koşullu çıkış belirtmek için işlecini ? kullanın. Aşağıdaki örnek bir uç nokta URL'si veya bir koşula bağlı olan boş bir dize döndürür:
param deployStorage bool = true
param storageName string
param location string = resourceGroup().location
resource myStorageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' = if (deployStorage) {
name: storageName
location: location
kind: 'StorageV2'
sku:{
name:'Standard_LRS'
tier: 'Standard'
}
properties: {
accessTier: 'Hot'
}
}
output endpoint string = deployStorage ? myStorageAccount.properties.primaryEndpoints.blob : ''
Dinamik çıkış sayısı
Bazı senaryolarda, bir değerin şablonu oluştururken döndürmeniz gereken örnek sayısını bilmezsiniz. Değişken sayıda değer döndürmek için ifadeyi for kullanabilirsiniz.
output <name> <data-type> = [for <item> in <collection>: {
...
}]
Aşağıdaki örnek bir dizi üzerinde yinelenir:
param nsgLocation string = resourceGroup().location
param orgNames array = [
'Contoso'
'Fabrikam'
'Coho'
]
resource nsg 'Microsoft.Network/networkSecurityGroups@2025-01-01' = [for name in orgNames: {
name: 'nsg-${name}'
location: nsgLocation
}]
output deployedNSGs array = [for (name, i) in orgNames: {
orgName: name
nsgName: nsg[i].name
resourceId: nsg[i].id
}]
Döngüler hakkında daha fazla bilgi için Bicep'te yinelemeli döngüler bölümüne bakın.
Modüllerden çıkışlar
Modülden çıkış değeri almak için aşağıdaki söz dizimini kullanın:
<module-name>.outputs.<property-name>
Aşağıdaki örnekte, bir yük dengeleyicide IP adresini ayarlamak için modülden bir değerin nasıl alıncağı gösterilmektedir:
module publicIP 'modules/public-ip-address.bicep' = {
name: 'public-ip-address-module'
}
resource loadBalancer 'Microsoft.Network/loadBalancers@2025-01-01' = {
name: loadBalancerName
location: location
properties: {
frontendIPConfigurations: [
{
name: 'name'
properties: {
publicIPAddress: {
id: publicIP.outputs.resourceId
}
}
}
]
// ...
}
}
Çıkış değerlerini alma
Dağıtım başarılı olduğunda, dağıtımın sonuçları otomatik olarak çıkış değerlerini gösterir.
Dağıtım geçmişinden çıkış değerleri almak için Azure CLI veya Azure PowerShell betiğini kullanabilirsiniz.
(Get-AzResourceGroupDeployment `
-ResourceGroupName <resource-group-name> `
-Name <deployment-name>).Outputs.resourceID.value
Çıkışlarda nesne sıralama
JSON'da nesne, sıfır veya daha fazla anahtar veya değer çiftinin sıralanmamış bir koleksiyonudur. Sıralama, uygulamalara bağlı olarak farklı olabilir. Örneğin, Bicep items() işlevi nesneleri alfabetik düzende sıralar. Diğer yerlerde, özgün sıralamayı koruyabilirsiniz. Bu belirsizlik nedeniyle, dağıtım parametreleri ve çıkışlarıyla etkileşim kuran kod yazarken nesne anahtarlarının sıralamasıyla ilgili varsayımlarda bulunmaktan kaçının.
Sonraki adımlar
Çıkışlara ait özellikler hakkında bilgi edinmek için bkz. Bicep dosya yapısı ve söz dizimi.