Bicep 存取子運算子
存取子運算子可用來存取子資源、物件的屬性,以及陣列中的元素。 您也可以使用屬性存取子來使用某些函數。
運算子 | 名稱 |
---|---|
[] |
索引存取子 |
. |
函式存取子 |
:: |
巢狀資源存取子 |
. |
屬性存取子 |
索引存取子
array[integerIndex]
object['stringIndex']
您可以使用索引存取子,從陣列取得元素或從物件取得屬性。
若為陣列,以整數形式提供索引。 整數需與待擷取元素以零起始的位置一致。
若為物件,以字串形式提供索引。 字串需與待擷取物件的名稱一致。
下列範例會取得陣列中的元素。
var arrayVar = [
'Coho'
'Contoso'
'Fabrikam'
]
output accessorResult string = arrayVar[1]
範例的輸出:
名稱 | 類型 | 值 |
---|---|---|
accessorResult | string | 'Contoso' |
下一個範例會取得物件的屬性。
var environmentSettings = {
dev: {
name: 'Development'
}
prod: {
name: 'Production'
}
}
output accessorResult string = environmentSettings['dev'].name
範例的輸出:
名稱 | 類型 | 值 |
---|---|---|
accessorResult | string | '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 |
string | 'Hello' |
outputQ |
整數 | 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 函數。