Condividi tramite


Operatori di accesso Bicep

Gli operatori di accesso vengono usati per accedere alle risorse figlio, alle proprietà sugli oggetti e agli elementi in una matrice. È anche possibile usare la funzione di accesso alle proprietà per usare alcune funzioni.

Operatore Nome
[] Funzione di accesso Index
. Funzione di accesso alle funzioni
:: Funzione di accesso alle risorse nidificata
. Funzioni di accesso alle proprietà

Funzione di accesso Index

array[integerIndex]

object['stringIndex']

Utilizzare la funzione di accesso index per ottenere un elemento da una matrice o da una proprietà da un oggetto.

Per una matrice, specificare l'indice come numero intero. L'intero corrisponde alla posizione in base zero dell'elemento da recuperare.

Per un oggetto, specificare l'indice come stringa. La stringa corrisponde al nome dell'oggetto da recuperare.

Nell'esempio seguente viene restituito un elemento in una matrice.

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

output accessorResult string = arrayVar[1]

Output dell'esempio:

Nome Type Valore
accessorResult string 'Contoso'

Nell'esempio seguente viene recuperata una proprietà su un oggetto .

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

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

Output dell'esempio:

Nome Type Valore
accessorResult string ‘Sviluppo’

Funzione di accesso alle funzioni

resourceName.functionName()

Due funzioni, getSecret e list*, supportano l'operatore di accesso per chiamare la funzione. Queste due funzioni sono le uniche funzioni che supportano l'operatore di accesso.

Esempio

Nell'esempio seguente viene fatto riferimento a un insieme di credenziali delle chiavi esistente, quindi viene usato getSecret per passare un segreto a un modulo.

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

Funzione di accesso alle risorse nidificata

parentResource::nestedResource

Una risorsa nidificata è una risorsa dichiarata all'interno di un'altra risorsa. Usare la funzione di accesso alle risorse nidificata :: per accedere alle risorse annidate dall'esterno della risorsa padre.

All'interno della risorsa padre si fa riferimento alla risorsa annidata con solo il nome simbolico. È sufficiente usare la funzione di accesso alle risorse nidificata quando si fa riferimento alla risorsa nidificata dall'esterno della risorsa padre.

Esempio

Nell'esempio seguente viene illustrato come fare riferimento a una risorsa annidata dall'interno della risorsa padre e dall'esterno della risorsa padre.

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

Funzione di accesso alla proprietà

objectName.propertyName

Utilizzare le funzioni di accesso alle proprietà per accedere alle proprietà di un oggetto. Le funzioni di accesso alle proprietà possono essere usate con qualsiasi oggetto, inclusi parametri e variabili che sono oggetti. Viene visualizzato un errore quando si usa l'accesso alle proprietà in un'espressione che non è un oggetto.

Esempio

Nell'esempio seguente viene illustrata una variabile oggetto e come accedere alle proprietà.

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

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

Output dell'esempio:

Nome Type Valore
outputZ string ‘Salve’
outputQ integer 42

In genere, si usa la funzione di accesso alle proprietà con una risorsa distribuita nel file Bicep. L'esempio seguente crea un indirizzo IP pubblico e usa le funzioni di accesso alle proprietà per restituire un valore dalla risorsa distribuita.

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

Passaggi successivi