Aracılığıyla paylaş


Bicep'teki çıkışlar

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.