Operadores de descriptores de acceso de Bicep
Los operadores de descriptor de acceso se usan para acceder a recursos secundarios y propiedades en objetos, y a elementos de una matriz. También puede usar el descriptor de acceso de propiedades para usar algunas funciones.
Operator | Nombre |
---|---|
[] |
Descriptor de acceso de índice |
. |
Descriptor de acceso de funciones |
:: |
Descriptor de acceso de recursos anidados |
. |
Descriptor de acceso de propiedades |
Descriptor de acceso de índice
array[integerIndex]
object['stringIndex']
Use el descriptor de acceso del índice para obtener un elemento de una matriz o una propiedad de un objeto.
En el caso de la matriz, proporcione el índice como un entero. El entero coincide con la posición de base cero del elemento que se va a recuperar.
En el caso del objeto, proporcione el índice como una cadena. La cadena coincide con el nombre del objeto que se va a recuperar.
En el ejemplo siguiente se obtiene un elemento de una matriz.
var arrayVar = [
'Coho'
'Contoso'
'Fabrikan'
]
output accessorResult string = arrayVar[1]
Salida del ejemplo:
Nombre | Tipo | Value |
---|---|---|
accessorResult | string | "Contoso" |
El siguiente ejemplo obtiene una propiedad de un objeto.
var environmentSettings = {
dev: {
name: 'Development'
}
prod: {
name: 'Production'
}
}
output accessorResult string = environmentSettings['dev'].name
Salida del ejemplo:
Nombre | Tipo | Value |
---|---|---|
accessorResult | string | "Development" |
Descriptor de acceso de funciones
resourceName.functionName()
Dos funciones, getSecret y list*, admiten el operador de descriptor de acceso para llamar a la función. Estas dos funciones son las únicas que admiten el operador de descriptor de acceso.
Ejemplo
En el ejemplo siguiente se hace referencia a un almacén de claves existente y, a continuación, se usa getSecret
para pasar un secreto a un módulo.
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')
}
}
Descriptor de acceso de recursos anidados
parentResource::nestedResource
Un recurso anidado es un recurso que se declara dentro de otro recurso. Use el descriptor de acceso de recursos anidados ::
para acceder a esos recursos anidados desde fuera del recurso primario.
Dentro del recurso primario, se hace referencia al recurso anidado tan solo con el nombre simbólico. Solo tiene que usar el descriptor de acceso de recursos anidados al hacer referencia al recurso anidado desde fuera del recurso primario.
Ejemplo
En el ejemplo siguiente se muestra cómo hacer referencia a un recurso anidado desde dentro del recurso primario y desde fuera del recurso primario.
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
Descriptor de acceso de propiedades
objectName.propertyName
Use los descriptores de acceso de propiedades para acceder a las propiedades de un objeto. Los descriptores de acceso de propiedades se pueden usar con cualquier objeto, incluidos los parámetros y variables que son objetos. Se produce un error al usar el acceso a una propiedad en una expresión que no es un objeto.
Ejemplo
En el ejemplo siguiente se muestra una variable de objeto y cómo acceder a las propiedades.
var x = {
y: {
z: 'Hello'
a: true
}
q: 42
}
output outputZ string = x.y.z
output outputQ int = x.q
Salida del ejemplo:
Nombre | Tipo | Value |
---|---|---|
outputZ |
string | 'Hello' |
outputQ |
integer | 42 |
Normalmente, se usa el descriptor de acceso de propiedades con un recurso implementado en el archivo de Bicep. En el ejemplo siguiente se crea una dirección IP pública y se usan los descriptores de acceso de propiedades para devolver un valor del recurso implementado.
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
Pasos siguientes
- Si desea ejecutar los ejemplos, use la CLI de Azure o Azure PowerShell para implementar un archivo de Bicep.
- Para crear un archivo de Bicep, consulte Inicio rápido: Creación de plantillas de archivos de Bicep con Visual Studio Code.
- Para obtener información sobre cómo resolver errores de tipos de Bicep, consulte Función any para Bicep.