Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Операторы доступа используются для доступа к дочерним ресурсам, свойствам объектов и элементам в массиве. Для использования некоторых функций можно также использовать метод доступа к свойствам.
| Оператор | Имя |
|---|---|
[] |
Метод доступа к индексу |
[^index] |
Обратный метод доступа к индексу |
. |
Метод доступа к функциям |
:: |
Метод доступа к вложенным ресурсам |
. |
Метод доступа к свойствам |
Метод доступа к индексу
array[integerIndex]
object['stringIndex']
Используйте метод доступа к индексу, чтобы получить элемент из массива или свойства из объекта.
Для массива укажите индекс в виде целого числа. Целое число соответствует отсчитываемой от нуля позиции извлекаемого элемента.
Для объекта укажите индекс в виде строки. Строка соответствует имени извлекаемого объекта.
В следующем примере возвращается элемент в массиве.
var arrayVar = [
'Coho'
'Contoso'
'Fabrikam'
]
output accessorResult string = arrayVar[1]
Выходные данные примера
| Имя | Тип | Ценность |
|---|---|---|
| accessorResult | струна | Contoso |
Следующий пример получает свойство объекта.
var environmentSettings = {
dev: {
name: 'Development'
}
prod: {
name: 'Production'
}
}
output accessorResult string = environmentSettings['dev'].name
Выходные данные примера
| Имя | Тип | Ценность |
|---|---|---|
| accessorResult | струна | "Разработка" |
Обратный метод доступа к индексу
Начиная с интерфейса командной строки Bicep версии 0.34.x, оператор обратного доступа к индексу (^) позволяет получить элемент из массива, подсчитывая с конца. Этот одноуровневый индекс означает ^1 возвращение последнего элемента, ^2 второго к последнему и т. д. Индекс должен быть положительным целым числом больше нуля и может быть указан как литерал или выражение, которое оценивается целым числом.
array[^index]
Если индекс превышает длину массива, ошибка компиляции возникает для статических индексов или возникает ошибка среды выполнения для динамических индексов.
Для постоянных массивов оператор вычисляется во время компиляции. Для динамических входных данных, таких как параметры, оценка происходит во время развертывания.
Пример
var items = [
'apple'
'banana'
'orange'
'grape'
]
output secondToLast string = items[^2]
Выходные данные примера
| Имя | Тип | Ценность |
|---|---|---|
| secondToLast | струна | "оранжевый" |
Метод доступа к функциям
resourceName.functionName()
Две функции — getSecret и list* — поддерживают оператор доступа для вызова функции. Эти две функции являются единственными функциями, поддерживающими оператор доступа.
Пример
В следующем примере ссылается существующее хранилище ключей, а затем используется getSecret для передачи секрета модулю.
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')
}
}
Метод доступа к вложенным ресурсам
parentResource::nestedResource
Вложенный ресурс — это ресурс, объявленный в другом ресурсе. Используйте метод :: доступа к вложенным ресурсам, чтобы получить доступ к вложенным ресурсам за пределами родительского ресурса.
В родительском ресурсе ссылается на вложенный ресурс с символьным именем. Необходимо использовать только метод доступа к вложенным ресурсам при ссылке на вложенный ресурс за пределами родительского ресурса.
Пример
В следующем примере показано, как ссылаться на вложенный ресурс из родительского ресурса и извне родительского ресурса.
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
Метод доступа к свойствам
objectName.propertyName
Используйте методы доступа к свойствам объекта. Методы доступа к свойствам можно использовать с любым объектом, включая параметры и переменные, которые являются объектами. При использовании доступа к свойству в выражении, которое не является объектом, возникает ошибка.
Пример
В следующем примере показана переменная объекта и способ доступа к свойствам.
var x = {
y: {
z: 'Hello'
a: true
}
q: 42
}
output outputZ string = x.y.z
output outputQ int = x.q
Выходные данные примера
| Имя | Тип | Ценность |
|---|---|---|
outputZ |
струна | "Hello" |
outputQ |
целое число | 42 |
Как правило, вы используете метод доступа к свойствам с ресурсом, развернутым в файле Bicep. В следующем примере создается общедоступный IP-адрес и используются методы доступа к свойствам для возврата значения из развернутого ресурса.
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
Дальнейшие шаги
- В этих примерах используйте для развертывания файла Bicep Azure CLI или Azure PowerShell.
- Сведения о создании файла Bicep см. в разделе Краткое руководство. Создание файлов Bicep с помощью Visual Studio Code.
- Дополнительные сведения об устранении ошибок типа Bicep см. в статье Функция any для Bicep.