至少可以说,该线程中的另一个答案具有误导性。
您采用哪条路线将值实际提供给模板的 dependsOn(或任何其他属性)并不重要。见鬼,你可以在那里放一根绳子
"dependsOn" [
"/subscription/GUID/resourceGroups/rgName/provider/providerName/resource/resourceName"
]
显然,这是一个坏主意,但它说明了这一点。您只需要返回一个有效的资源标识符,您可以以任何方式构造它(或者您可以在使用脚本进行配置时将其作为变量传递)。
此外,有时在使用嵌套资源时 resourceId 无法工作,因此您需要连接 3 个变量,在这种情况下 concat 可以提供帮助。
没有什么能阻止你将一个嵌套在另一个里面:
"[concat(resourceId('Microsoft.Compute/virtualMachines', parameters('virtualMachineName'), 'SOME TEXT'))]
TLDR 你可以使用任何你喜欢的方式返回一个有效的资源标识符。
ps:可以正常工作的“损坏”resourceId示例:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2017-05-10",
"name": "nestedTemplate",
"resourceGroup": "xxx",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2017-06-01",
"name": "egw4y35hthrh35h24tz1",
"location": "eastus",
"sku": {
"name": "Standard_LRS"
},
"tags": {
"test": "[resourceId('Microsoft.Storage/storageAccounts', 'test')]"
},
"kind": "Storage",
"properties": {}
}
]
}
}
}
]
}
这必须是订阅级别的部署