Compartir a través de


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'
  'Fabrikam'
]

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