Операторы методов доступа Bicep
Операторы доступа используются для доступа к дочерним ресурсам, свойствам объектов и элементам в массиве. Для некоторых функций также можно использовать метод доступа к свойству.
Оператор | Имя. |
---|---|
[] |
Метод доступа к индексу |
. |
Метод доступа к функции |
:: |
Метод доступа к вложенным ресурсам |
. |
Метод доступа к свойству |
Метод доступа к индексу
array[integerIndex]
object['stringIndex']
Метод доступа по индексу применяется для получения элемента из массива или свойства из объекта.
Для массива индекс должен иметь тип integer. Это целочисленное значение обозначает позицию извлекаемого элемента в массиве, начиная с нуля.
Для объекта индекс должен иметь тип string. Это строковое значение обозначает имя извлекаемого объекта.
В следующем примере показано получение элемента в массиве.
var arrayVar = [
'Coho'
'Contoso'
'Fabrikan'
]
output accessorResult string = arrayVar[1]
Выходные данные примера
Имя. | Тип | значение |
---|---|---|
accessorResult | строка | 'Contoso' |
В следующем примере демонстрируется получение свойства объекта.
var environmentSettings = {
dev: {
name: 'Development'
}
prod: {
name: 'Production'
}
}
output accessorResult string = environmentSettings['dev'].name
Выходные данные примера
Имя. | Тип | значение |
---|---|---|
accessorResult | строка | 'Development' |
Метод доступа к функции
resourceName.functionName()
Оператор доступа для вызова функции поддерживают две функции: getSecret и list*. Это единственные функции, поддерживающие оператор метода доступа.
Пример
В примере ниже применяется ссылка на существующее хранилище ключей, а затем используется функция getSecret
для передачи секрета в модуль.
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')
}
}
Метод доступа к вложенному ресурсу
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 |
integer | 42 |
Как правило, метод доступа к свойству используется с ресурсом, развернутым в файле Bicep. В примере ниже создается общедоступный IP-адрес и используются методы доступа к свойствам для возврата значения из развернутого ресурса.
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
Следующие шаги
- В этих примерах используйте для развертывания файла Bicep Azure CLI или Azure PowerShell.
- Сведения о создании файла Bicep см. в разделе Краткое руководство. Создание файлов Bicep с помощью Visual Studio Code.
- Дополнительные сведения об устранении ошибок типа Bicep см. в статье Функция any для Bicep.