你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Bicep 访问器运算符
访问器运算符用于访问对象上的子资源、属性和数组中的元素。 还可以使用属性访问器来使用某些函数。
运算符 | 名称 |
---|---|
[] |
索引访问器 |
. |
函数访问器 |
:: |
嵌套资源访问器 |
. |
属性访问器 |
索引访问器
array[integerIndex]
object['stringIndex']
使用索引访问器从数组获取元素或从对象获取属性。
对于数组,请提供整数形式的索引 。 该整数匹配要检索的元素从零开始的位置。
对于对象,请提供字符串形式的索引 。 该字符串匹配要检索的对象的名称。
以下示例获取数组中的元素。
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
后续步骤
- 若要运行这些示例,请使用 Azure CLI 或 Azure PowerShell 来部署 Bicep 文件。
- 若要创建 Bicep 文件,请参阅快速入门:使用 Visual Studio Code 创建 Bicep 文件。
- 有关如何解决 Bicep 类型错误的信息,请参阅 Bicep 的 Any 函数。