Delen via


Bicep-toegangsoperators

De accessoroperators worden gebruikt voor toegang tot onderliggende resources, eigenschappen van objecten en elementen in een matrix. U kunt ook de eigenschapstoegangsfunctie gebruiken om bepaalde functies te gebruiken.

Operator Naam
[] Indextoegangsfunctie
. Functietoegangsfunctie
:: Geneste resourcetoegangsor
. Eigenschapstoegangsor

Indextoegangsfunctie

array[integerIndex]

object['stringIndex']

Gebruik de indextoegangsfunctie om een element op te halen uit een matrix of een eigenschap van een object.

Geef voor een matrix de index op als een geheel getal. Het gehele getal komt overeen met de positie op basis van nul van het element dat moet worden opgehaald.

Geef voor een object de index op als een tekenreeks. De tekenreeks komt overeen met de naam van het object dat moet worden opgehaald.

In het volgende voorbeeld wordt een element in een matrix weergegeven.

var arrayVar = [
  'Coho'
  'Contoso'
  'Fabrikan'
]

output accessorResult string = arrayVar[1]

Uitvoer uit het voorbeeld:

Name Type Weergegeven als
accessorResult tekenreeks 'Contoso'

In het volgende voorbeeld wordt een eigenschap voor een object opgehaald.

var environmentSettings = {
  dev: {
    name: 'Development'
  }
  prod: {
    name: 'Production'
  }
}

output accessorResult string = environmentSettings['dev'].name

Uitvoer uit het voorbeeld:

Name Type Weergegeven als
accessorResult tekenreeks 'Ontwikkeling'

Functietoegangsfunctie

resourceName.functionName()

Twee functies: getSecret en list* - ondersteunen de operator voor accessor voor het aanroepen van de functie. Deze twee functies zijn de enige functies die ondersteuning bieden voor de toegangsoperator.

Opmerking

Het volgende voorbeeld verwijst naar een bestaande sleutelkluis en gebruikt getSecret vervolgens om een geheim door te geven aan een module.

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')
  }
}

Geneste resourcetoegangsor

parentResource::nestedResource

Een geneste resource is een resource die wordt gedeclareerd binnen een andere resource. Gebruik de geneste resourcetoegangsor :: om toegang te krijgen tot geneste resources van buiten de bovenliggende resource.

Binnen de bovenliggende resource verwijst u naar de geneste resource met alleen de symbolische naam. U hoeft alleen de geneste resourcetoegangsor te gebruiken wanneer u verwijst naar de geneste resource van buiten de bovenliggende resource.

Opmerking

In het volgende voorbeeld ziet u hoe u naar een geneste resource verwijst vanuit de bovenliggende resource en van buiten de bovenliggende resource.

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

Eigenschapstoegangsor

objectName.propertyName

Eigenschapstoegangsors gebruiken om toegang te krijgen tot eigenschappen van een object. Eigenschapstoegangsors kunnen worden gebruikt met elk object, inclusief parameters en variabelen die objecten zijn. Er treedt een fout op wanneer u de toegang tot eigenschappen gebruikt voor een expressie die geen object is.

Opmerking

In het volgende voorbeeld ziet u een objectvariabele en hoe u toegang krijgt tot de eigenschappen.

var x = {
  y: {
    z: 'Hello'
    a: true
  }
  q: 42
}

output outputZ string = x.y.z
output outputQ int = x.q

Uitvoer uit het voorbeeld:

Name Type Weergegeven als
outputZ tekenreeks 'Hallo'
outputQ geheel getal 42

Normaal gesproken gebruikt u de eigenschapstoegangsor met een resource die is geïmplementeerd in het Bicep-bestand. In het volgende voorbeeld wordt een openbaar IP-adres gemaakt en worden eigenschapstoegangsors gebruikt om een waarde van de geïmplementeerde resource te retourneren.

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

Volgende stappen