Bicep-accessoroperatorer
Accessoroperatorerna används för att komma åt underordnade resurser, egenskaper för objekt och element i en matris. Du kan också använda egenskapsåtkomstorn för att använda vissa funktioner.
Operator | Name |
---|---|
[] |
Indexåtkomst |
. |
Funktionsåtkomst |
:: |
Kapslad resursåtkomstor |
. |
Egenskapsåtkomst |
Indexåtkomst
array[integerIndex]
object['stringIndex']
Använd indexåtkomstorn för att hämta antingen ett element från en matris eller en egenskap från ett objekt.
För en matris anger du indexet som ett heltal. Heltalet matchar den nollbaserade positionen för elementet som ska hämtas.
För ett objekt anger du indexet som en sträng. Strängen matchar namnet på det objekt som ska hämtas.
I följande exempel hämtas ett element i en matris.
var arrayVar = [
'Coho'
'Contoso'
'Fabrikan'
]
output accessorResult string = arrayVar[1]
Utdata från exemplet:
Namn | Typ | Värde |
---|---|---|
accessorResult | sträng | "Contoso" |
I nästa exempel hämtas en egenskap för ett objekt.
var environmentSettings = {
dev: {
name: 'Development'
}
prod: {
name: 'Production'
}
}
output accessorResult string = environmentSettings['dev'].name
Utdata från exemplet:
Namn | Typ | Värde |
---|---|---|
accessorResult | sträng | "Utveckling" |
Funktionsåtkomst
resourceName.functionName()
Två funktioner – getSecret och list* – stöder accessoroperatorn för att anropa funktionen. Dessa två funktioner är de enda funktioner som stöder accessoroperatorn.
Exempel
Följande exempel refererar till ett befintligt nyckelvalv och använder getSecret
sedan för att skicka en hemlighet till en modul.
resource kv 'Microsoft.KeyVault/vaults@2023-07-01' existing = {
name: kvName
scope: resourceGroup(subscriptionId, kvResourceGroup )
}
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
sqlServerName: sqlServerName
adminLogin: adminLogin
adminPassword: kv.getSecret('vmAdminPassword')
}
}
Kapslad resursåtkomstor
parentResource::nestedResource
En kapslad resurs är en resurs som deklareras inom en annan resurs. Använd den kapslade resursåtkomstorn ::
för att komma åt kapslade resurser utanför den överordnade resursen.
I den överordnade resursen refererar du till den kapslade resursen med bara det symboliska namnet. Du behöver bara använda den kapslade resursåtkomstorn när du refererar till den kapslade resursen utanför den överordnade resursen.
Exempel
I följande exempel visas hur du refererar till en kapslad resurs från den överordnade resursen och utanför den överordnade resursen.
resource demoParent 'demo.Rp/parentType@2024-01-01' = {
name: 'demoParent'
location: 'West US'
// Declare a nested resource within 'demoParent'
resource demoNested 'childType' = {
name: 'demoNested'
properties: {
displayName: 'The nested instance.'
}
}
// Declare another nested resource
resource demoSibling 'childType' = {
name: 'demoSibling'
properties: {
// Use symbolic name to reference because this line is within demoParent
displayName: 'Sibling of ${demoNested.properties.displayName}'
}
}
}
// Use nested accessor to reference because this line is outside of demoParent
output displayName string = demoParent::demoNested.properties.displayName
Egenskapsåtkomst
objectName.propertyName
Använd egenskapsåtkomster för att komma åt egenskaper för ett objekt. Egenskapsåtkomster kan användas med valfritt objekt, inklusive parametrar och variabler som är objekt. Du får ett fel när du använder egenskapsåtkomsten för ett uttryck som inte är ett objekt.
Exempel
I följande exempel visas en objektvariabel och hur du kommer åt egenskaperna.
var x = {
y: {
z: 'Hello'
a: true
}
q: 42
}
output outputZ string = x.y.z
output outputQ int = x.q
Utdata från exemplet:
Namn | Typ | Värde |
---|---|---|
outputZ |
sträng | "Hej" |
outputQ |
integer | 42 |
Vanligtvis använder du egenskapsåtkomstorn med en resurs som distribueras i Bicep-filen. I följande exempel skapas en offentlig IP-adress och egenskapsåtkomster används för att returnera ett värde från den distribuerade resursen.
resource publicIp 'Microsoft.Network/publicIPAddresses@2023-11-01' = {
name: publicIpResourceName
location: location
properties: {
publicIPAllocationMethod: dynamicAllocation ? 'Dynamic' : 'Static'
dnsSettings: {
domainNameLabel: publicIpDnsLabel
}
}
}
// Use property accessor to get value
output ipFqdn string = publicIp.properties.dnsSettings.fqdn
Nästa steg
- Om du vill köra exemplen använder du Azure CLI eller Azure PowerShell för att distribuera en Bicep-fil.
- Information om hur du skapar en Bicep-fil finns i Snabbstart: Skapa Bicep-filer med Visual Studio Code.
- Information om hur du löser Bicep-typfel finns i Alla funktioner för Bicep.