Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje, jak definovat výstupní hodnoty v souboru Bicep. Výstupy použijete v případě, že potřebujete vracet hodnoty z nasazených prostředků. V souboru Bicep jste omezeni na 64 výstupů. Další informace najdete v tématu Omezení šablon.
Definování výstupů
Syntaxe pro definování výstupní hodnoty je:
output <name> <data-type or type-expression> = <value>
Výstup může mít stejný název jako parametr, proměnná, modul nebo prostředek. Každá výstupní hodnota se musí přeložit na jeden z datových typů nebo uživatelsky definovaných datových typů v Bicep.
Následující příklad ukazuje, jak vrátit vlastnost z nasazeného prostředku. V tomto příkladu publicIP je symbolický název veřejné IP adresy nasazené v souboru Bicep. Výstupní hodnota získá plně kvalifikovaný název domény pro veřejnou IP adresu:
output hostname string = publicIP.properties.dnsSettings.fqdn
Následující příklad ukazuje, jak vrátit výstupy různých typů:
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()
Pokud potřebujete vytvořit výstup vlastnosti, která má v názvu pomlčku, použijte kolem názvu hranaté závorky místo tečky. Například použijte ['property-name'] místo .property-name.
var user = {
'user-name': 'Test Person'
}
output stringOutput string = user['user-name']
Následující příklad ukazuje použití výrazu typu:
param foo 'a' | 'b' = 'a'
output out 'a' | 'b' = foo
Použití dekorátorů
Dekorátory jsou zapsány ve formátu @expression a jsou umístěny nad deklaracemi výstupu. V následující tabulce jsou uvedeny dostupné dekorátory pro výstupy:
| Dekoratér | Přihlásit se | Důvod | Popis |
|---|---|---|---|
| popis | vše | řetězec | Tím se zobrazí popis výstupu. |
| diskriminátor | objekt | řetězec | Pomocí tohoto dekorátoru zajistěte, aby byla správná podtřída správně identifikována a spravována. Další informace naleznete v tématu Datový typ unie s vlastními značkami. |
| maxLength | pole, řetězec | int (integer) | To poskytuje maximální délku pro výstupy řetězců a polí a hodnota je inkluzivní. |
| maxValue | int (integer) | int (integer) | To poskytuje maximální hodnotu pro celočíselný výstup, a tato hodnota je zahrnuta. |
| metadata | vše | objekt | Poskytuje vlastní vlastnosti, které se mají použít na výstup a mohou obsahovat vlastnost popisu, která je ekvivalentní dekorátoru popisu. |
| minLength | pole, řetězec | int (integer) | To poskytuje minimální délku pro výstupy řetězců a polí a hodnota je inkluzivní. |
| minValue | int (integer) | int (integer) | Toto poskytuje minimální hodnotu pro celočíselný výstup a tato hodnota je včetně. |
| zapečetěno | objekt | Žádná | Stanovte BCP089 jako chybu místo upozornění, když je název vlastnosti uživatelsky definovaného datového typu pravděpodobně překlep. Další informace naleznete v tématu Zvýšení úrovně chyby. |
| zajistit | řetězec, objekt | Žádná | Označí výstup jako zabezpečený. Hodnota zabezpečeného výstupu se neuloží do historie nasazení a nezaprotokoluje se. Další informace naleznete v tématu Zabezpečení řetězců a objektů. |
Dekorátory jsou v sys prostoru názvů. Pokud potřebujete odlišit dekorátor od jiné položky se stejným názvem, uveďte dekorátor pomocí sys. Pokud například váš soubor Bicep obsahuje parametr s názvem description, musíte přidat sys obor názvů při použití dekorátoru description.
@sys.description('The name of the instance.')
param name string
@sys.description('The description of the instance to display.')
param description string
Popis
Pokud chcete přidat vysvětlení, přidejte popis k výstupním deklaracím. Příklad:
@description('Conditionally output the endpoint.')
output endpoint string = deployStorage ? myStorageAccount.properties.primaryEndpoints.blob : ''
Text ve formátu Markdown lze použít pro text popisu.
Diskriminátor
Viz uživatelsky definovaný označený sjednocený datový typ.
Celočíselná omezení
Můžete nastavit minimální a maximální hodnoty pro celočíselné výstupy a jedno nebo obě omezení.
var thisMonth = 3
@minValue(1)
@maxValue(12)
output month int = thisMonth
Omezení délky
Pro výstupy řetězců a polí můžete zadat minimální a maximální délku. Můžete nastavit jedno nebo obě omezení. U řetězců délka označuje počet znaků. U polí určuje délka počet položek v matici.
Následující příklad deklaruje dva výstupy. Jedním výstupem je název účtu úložiště, který musí mít 3 až 24 znaků. Druhý výstup je pole, které musí mít 1–5 položek:
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
Metadáta
Pokud máte vlastní vlastnosti, které chcete použít na výstup, přidejte dekorátor metadat. V metadatech definujte objekt s vlastními názvy a hodnotami. Objekt, který definujete pro metadata, může obsahovat vlastnosti libovolného názvu a typu.
Tento dekorátor můžete použít ke sledování informací o výstupu, které není vhodné přidávat do popisu.
var obj = {}
@description('Configuration values that are applied when the application starts.')
@metadata({
source: 'database'
contact: 'Web team'
})
output settings object = obj
Když poskytnete @metadata() dekorátoru vlastnost, která je v konfliktu s jiným dekorátorem, má tento dekorátor vždy přednost před čímkoli v dekorátoru @metadata() . Konfliktní vlastnost v rámci @metadata() hodnoty je redundantní a bude nahrazena. Další informace najdete v tématu Pravidlo Linter – žádná konfliktní metadata.
Zapečetěný
Viz Zvýšení úrovně chyby.
Zabezpečené výstupy
S Bicep verze 0.35.1 a novějšími můžete označit výstupy řetězců nebo objektů jako bezpečné. Když je výstup zdobený @secure(), Azure Resource Manager považuje výstupní hodnotu za citlivou, brání jejímu zaprotokolování nebo zobrazení v historii nasazení, webu Azure Portal nebo výstupech příkazového řádku.
@secure()
output demoPassword string
@secure()
output demoSecretObject object
Dekorátor @secure() je platný pouze pro výstupy typu řetězec nebo objekt, protože jsou v souladu s typy secureString a secureObject v šablonách ARM. Chcete-li bezpečně předat pole nebo čísla, zabalte je do objektu secureObject nebo je serializujte jako řetězec secureString.
Podmíněný výstup
Pokud hodnota, kterou chcete vrátit, závisí na podmínce v nasazení, použijte operátor ?.
output <name> <data-type> = <condition> ? <true-value> : <false-value>
Podmíněný výstup se obvykle používá při podmíněném nasazení prostředku. Následující příklad ukazuje, jak podmíněně vrátit ID prostředku pro veřejnou IP adresu na základě toho, zda byla nasazena nová.
Pokud chcete zadat podmíněný výstup v Bicep, použijte ? operátor. Následující příklad vrátí adresu URL koncového bodu nebo prázdný řetězec, který závisí na podmínce:
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 : ''
Dynamický počet výstupů
V některých scénářích neznáte počet instancí, které potřebujete vrátit při vytváření šablony. Pomocí výrazu for můžete vrátit proměnlivý počet hodnot.
output <name> <data-type> = [for <item> in <collection>: {
...
}]
Následující příklad prochází přes pole:
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
}]
Další informace o smyčkách naleznete v tématu Iterativní smyčky v Bicep.
Výstupy z modulů
Pokud chcete získat výstupní hodnotu z modulu, použijte následující syntaxi:
<module-name>.outputs.<property-name>
Následující příklad ukazuje, jak načíst hodnotu z modulu pro nastavení IP adresy v nástroji pro vyrovnávání zatížení:
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
}
}
}
]
// ...
}
}
Získání výstupních hodnot
Když nasazení proběhne úspěšně, výsledky nasazení automaticky zobrazí výstupní hodnoty.
K získání výstupních hodnot z historie nasazení můžete použít Azure CLI nebo skript Azure PowerShellu.
(Get-AzResourceGroupDeployment `
-ResourceGroupName <resource-group-name> `
-Name <deployment-name>).Outputs.resourceID.value
Řazení objektů ve výstupech
Ve formátu JSON je objekt neuspořádanou kolekcí nula nebo více párů klíč-hodnota. Řazení se může lišit v závislosti na implementacích. Například funkce Bicep items() seřadí objekty v abecedním pořadí. Na jiných místech můžete zachovat původní řazení. Kvůli tomuto nedeterminismu nepoužívejte žádné předpoklady týkající se řazení klíčů objektů při psaní kódu, který komunikuje s parametry nasazení a výstupy.
Další kroky
Informace o vlastnostech, které jsou k dispozici pro výstupy, najdete v tématu Struktura a syntaxe souborů Bicep.