Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os operadores acessadores são usados para acessar recursos filho, propriedades em objetos e elementos em uma matriz. Você também pode usar o acessador de propriedades para usar algumas funções.
| Operador | Nome |
|---|---|
[] |
Acessador de índice |
[^index] |
Acessador de índice reverso |
. |
Acessador de funções |
:: |
Acessador de recursos aninhados |
. |
Acessador de propriedades |
Acessador de índice
array[integerIndex]
object['stringIndex']
Use o acessador de índice para obter um elemento de uma matriz ou uma propriedade de um objeto.
Para uma matriz, forneça o índice como um inteiro. O inteiro corresponde à posição baseada em zero do elemento a ser recuperado.
Para um objeto, forneça o índice como uma cadeia de caracteres. A cadeia de caracteres corresponde ao nome do objeto a ser recuperado.
O exemplo a seguir obtém um elemento em uma matriz.
var arrayVar = [
'Coho'
'Contoso'
'Fabrikam'
]
output accessorResult string = arrayVar[1]
Saída do exemplo:
| Nome | Tipo | Valor |
|---|---|---|
| accessorResult | corda | 'Contoso' |
O exemplo a seguir obtém uma propriedade em um objeto.
var environmentSettings = {
dev: {
name: 'Development'
}
prod: {
name: 'Production'
}
}
output accessorResult string = environmentSettings['dev'].name
Saída do exemplo:
| Nome | Tipo | Valor |
|---|---|---|
| accessorResult | corda | 'Desenvolvimento' |
Acessador de índice reverso
Começando com a CLI do Bicep versão 0.34.x, o operador do acessador de índice reverso (^) permite que você recupere um elemento de uma matriz contando do final. Esse índice baseado em um significa que ^1 retorna o último item, ^2 o penúltimo e assim por diante. O índice deve ser um inteiro positivo maior que zero e pode ser especificado como um literal ou uma expressão que seja avaliada como um inteiro.
array[^index]
Se o índice exceder o comprimento da matriz, ocorrerá um erro de compilação para índices estáticos ou ocorrerá um erro de runtime para índices dinâmicos.
Para matrizes constantes, o operador é avaliado em tempo de compilação. Para entradas dinâmicas, como parâmetros, a avaliação ocorre no momento da implantação.
Exemplo
var items = [
'apple'
'banana'
'orange'
'grape'
]
output secondToLast string = items[^2]
Saída do exemplo:
| Nome | Tipo | Valor |
|---|---|---|
| secondToLast | corda | 'laranja' |
Acessador de funções
resourceName.functionName()
Duas funções - getSecret e list* - dão suporte ao operador acessador para chamar a função. Essas duas funções são as únicas funções que dão suporte ao operador acessador.
Exemplo
O exemplo a seguir faz referência a um cofre de chaves existente e, em seguida, usa getSecret para passar um segredo para um módulo.
resource kv 'Microsoft.KeyVault/vaults@2025-05-01' existing = {
name: kvName
scope: resourceGroup(subscriptionId, kvResourceGroup )
}
module sql './sql.bicep' = {
name: 'deploySQL'
params: {
sqlServerName: sqlServerName
adminLogin: adminLogin
adminPassword: kv.getSecret('vmAdminPassword')
}
}
Acessador de recursos aninhados
parentResource::nestedResource
Um recurso aninhado é um recurso declarado em outro recurso. Use o acessador :: de recursos aninhado para acessar os recursos aninhados de fora do recurso pai.
No recurso pai, você faz referência ao recurso aninhado apenas com o nome simbólico. Você só precisa usar o acessador de recursos aninhado ao referenciar o recurso aninhado de fora do recurso pai.
Exemplo
O exemplo a seguir mostra como referenciar um recurso aninhado de dentro do recurso pai e de fora do recurso pai.
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
Acessador de propriedades
objectName.propertyName
Use acessadores de propriedade para acessar as propriedades de um objeto. Os acessadores de propriedade podem ser usados com qualquer objeto, incluindo parâmetros e variáveis que são objetos. Você recebe um erro ao usar o acesso à propriedade em uma expressão que não é um objeto.
Exemplo
O exemplo a seguir mostra uma variável de objeto e como acessar as propriedades.
var x = {
y: {
z: 'Hello'
a: true
}
q: 42
}
output outputZ string = x.y.z
output outputQ int = x.q
Saída do exemplo:
| Nome | Tipo | Valor |
|---|---|---|
outputZ |
corda | 'Olá' |
outputQ |
número inteiro | 42 |
Normalmente, você usa o acessador de propriedades com um recurso implantado no arquivo Bicep. O exemplo a seguir cria um endereço IP público e usa acessadores de propriedade para retornar um valor do recurso implantado.
resource publicIp 'Microsoft.Network/publicIPAddresses@2025-01-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
Próximas etapas
- Para executar os exemplos, use o CLI do Azure ou o Azure PowerShell para implantar um arquivo Bicep.
- Para criar um arquivo Bicep, consulte Início rápido: criar arquivos Bicep com o Visual Studio Code.
- Para obter informações sobre como resolver erros de tipo Bicep, confira Qualquer função para Bicep.