Partage via


Opérateurs d’accesseur Bicep

Les opérateurs d’accesseur sont utilisés pour accéder aux ressources et propriétés enfants sur les objets, et aux éléments dans un tableau. Vous pouvez également utiliser l’accesseur de propriété pour utiliser certaines fonctions.

Opérateur Nom
[] Accesseur d’index
. Accesseur de fonction
:: Accesseur de ressource imbriquée
. Accesseur de propriété

Accesseur d’index

array[integerIndex]

object['stringIndex']

Utilisez l’accesseur d’index pour obtenir un élément d’un tableau ou une propriété d’un objet.

Pour un tableau, fournissez l’index sous la forme d’un entier. L’entier correspond à la position de base zéro de l’élément à récupérer.

Pour un objet, fournissez l’index sous la forme d’une chaîne. La chaîne correspond au nom de l’objet à récupérer.

L’exemple suivant récupère un élément dans un tableau.

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

output accessorResult string = arrayVar[1]

Résultat de l'exemple :

Nom Type Valeur
accessorResult string 'Contoso'

L’exemple suivant récupère une propriété sur un objet.

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

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

Résultat de l'exemple :

Nom Type Valeur
accessorResult string 'Development'

Accesseur de fonction

resourceName.functionName()

Deux fonctions (getSecret et list*) prennent en charge l’opérateur d’accesseur pour l’appel de la fonction. Ces deux fonctions sont les seules qui prennent en charge l’opérateur d’accesseur.

Exemple

L’exemple suivant référence un coffre de clés existant, puis utilise getSecret pour transmettre un secret à un 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')
  }
}

Accesseur de ressource imbriquée

parentResource::nestedResource

Une ressource imbriquée est une ressource déclarée dans une autre ressource. Utilisez l’accesseur de ressource imbriqué :: pour accéder à ces ressources imbriquées à partir de l’extérieur de la ressource parente.

Dans la ressource parente, vous référencez la ressource imbriquée uniquement avec le nom symbolique. Vous devez utiliser l’accesseur de ressource imbriquée uniquement quand vous référencez la ressource imbriquée à partir de l’extérieur de la ressource parente.

Exemple

L’exemple suivant montre comment référencer une ressource imbriquée au sein de la ressource parente et à partir de l’extérieur de la ressource parente.

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

Accesseur de propriété

objectName.propertyName

Utilisez des accesseurs de propriété pour accéder aux propriétés d’un objet. Les accesseurs de propriété peuvent être utilisés avec n’importe quel objet, y compris des paramètres et des variables qui sont des objets. Si vous utilisez l’accès aux propriétés sur une expression qui n’est pas un objet, une erreur se produit.

Exemple

L’exemple suivant montre une variable objet et comment accéder aux propriétés.

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

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

Résultat de l'exemple :

Nom Type Valeur
outputZ string 'Hello'
outputQ entier 42

En général, vous utilisez l’accesseur de propriété avec une ressource déployée dans le fichier Bicep. Dans l’exemple suivant, une adresse IP publique est créée et des accesseurs de propriété sont utilisés pour retourner une valeur à partir de la ressource déployée.

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

Étapes suivantes