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
- Pour exécuter les exemples, utilisez Azure CLI ou Azure PowerShell afin de déployer un fichier Bicep.
- Pour créer un fichier Bicep, consultez Démarrage rapide : Créer des fichiers Bicep avec Visual Studio Code.
- Pour plus d’informations sur la résolution des erreurs de type Bicep, consultez Fonction any pour Bicep.