Bicep-Accessoroperatoren

Die Accessoroperatoren werden verwendet, um auf untergeordnete Ressourcen, Eigenschaften von Objekten und Elemente in einem Array zuzugreifen. Sie können den Eigenschaftenaccessor auch verwenden, um einige Funktionen zu verwenden.

Operator Name
[] Indexaccessor
. Funktionsaccessor
:: Accessor für geschachtelte Ressourcen
. Eigenschaftenaccessor

Indexaccessor

array[integerIndex]

object['stringIndex']

Verwenden Sie den Indexaccessor, um entweder ein Element aus einem Array oder eine Eigenschaft aus einem Objekt abzurufen.

Für ein Array geben Sie den Index als ganze Zahl an. Die ganze Zahl entspricht der auf Null basierenden Position des abzurufenden Elements.

Für ein Objekt geben Sie den Index als Zeichenfolge an. Die Zeichenfolge entspricht dem Namen des abzurufenden Objekts.

Das folgende Beispiel ruft ein Element in einem Array ab.

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

output accessorResult string = arrayVar[1]

Ausgabe des Beispiels:

Name type Wert
accessorResult Zeichenfolge „Contoso“

Das nächste Beispiel ruft eine Eigenschaft für ein Objekt ab.

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

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

Ausgabe des Beispiels:

Name type Wert
accessorResult Zeichenfolge „Development“

Funktionsaccessor

resourceName.functionName()

Zwei Funktionen, getSecret und list*, unterstützen den Accessoroperator zum Aufrufen der Funktion. Diese beiden Funktionen sind die einzigen Funktionen, die den Accessoroperator unterstützen.

Beispiel

Das folgende Beispiel verweist auf einen vorhandenen Schlüsseltresor und verwendet dann getSecret, um ein Geheimnis an ein Modul zu übergeben.

resource kv 'Microsoft.KeyVault/vaults@2023-02-01' existing = {
  name: kvName
  scope: resourceGroup(subscriptionId, kvResourceGroup )
}

module sql './sql.bicep' = {
  name: 'deploySQL'
  params: {
    sqlServerName: sqlServerName
    adminLogin: adminLogin
    adminPassword: kv.getSecret('vmAdminPassword')
  }
}

Accessor für geschachtelte Ressourcen

parentResource::nestedResource

Eine geschachtelte Ressource ist eine Ressource, die in einer anderen Ressource deklariert wird. Verwenden Sie den Accessor für geschachtelte Ressourcen (::), um von außerhalb der übergeordneten Ressource auf diese geschachtelten Ressourcen zuzugreifen.

Innerhalb der übergeordneten Ressource verweisen Sie lediglich mit dem symbolischen Namen auf die geschachtelte Ressource. Sie müssen den Accessor für geschachtelte Ressourcen nur verwenden, wenn Sie von außerhalb der übergeordneten Ressource auf die geschachtelte Ressource verweisen.

Beispiel

Das folgende Beispiel zeigt, wie Sie innerhalb der übergeordneten Ressource und von außerhalb der übergeordneten Ressource auf eine geschachtelte Ressource verweisen.

resource demoParent 'demo.Rp/parentType@2023-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

Eigenschaftenaccessor

objectName.propertyName

Verwenden Sie Eigenschaftenaccessoren, um auf Eigenschaften eines Objekts zuzugreifen. Eigenschaftenaccessoren können mit jedem Objekt verwendet werden, einschließlich Parametern und Variablen, die Objekte sind. Sie erhalten einen Fehler, wenn Sie den Eigenschaftenaccessor mit einem Ausdruck verwenden, der kein Objekt ist.

Beispiel

Das folgende Beispiel zeigt eine Objektvariable und wie auf die Eigenschaften zugegriffen wird.

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

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

Ausgabe des Beispiels:

Name type Wert
outputZ Zeichenfolge 'Hello'
outputQ integer 42

In der Regel verwenden Sie den Eigenschaftenaccessor mit einer in der Bicep-Datei bereitgestellten Ressource. Im folgenden Beispiel wird eine öffentliche IP-Adresse erstellt und Eigenschaftenaccessoren verwendet, um einen Wert aus der bereitgestellten Ressource zurückzugeben.

resource publicIp 'Microsoft.Network/publicIPAddresses@2022-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ächste Schritte