取决于暂存槽,资源 ID 中有多个逗号

dependsOn on staging slot, multiple commas in resource id

在我的一生中,我似乎无法获得 dependsOn 部分来正确构建对暂存槽的依赖。我收到以下错误:

Unable to evaluate template language function 'resourceId': function requires exactly one multi-segmented argument which must be resource type including resource provider namespace. Current function arguments 'Microsoft.Web/sites/slots,web01/staging'

我尝试了很多方法,但都以相同的错误告终,下面是我尝试过的选项之一:

"dependsOn": [
    "[concat(resourceId('Microsoft.Web/sites/slots', parameters('webappName')), '/staging')]"
],

"dependsOn": [
    "[resourceId('Microsoft.Web/sites/slots', concat(parameters('webappName')), '/staging'))]"
],

有谁知道我该如何解决这个问题?

不需要使用concat函数,resourceId本身接受几个参数构成名称:https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-resource#resourceid

这里举例说明我们如何在我的工作中使用它来为插槽创建配置。

"apiVersion": "2015-08-01",
"condition": "[equals(parameters('CreateSlot'), 'true')]",
"name": "appsettings",
"type": "config",
"dependsOn": [
     "[resourceId('Microsoft.Web/sites', variables('functionAppName'))]",
     "[resourceId('Microsoft.Web/sites/slots', variables('functionAppName'), parameters('SlotName'))]"
],
"properties": {                                
      "AzureWebJobsDashboard": "[concat('DefaultEndpointsProtocol=https;AccountName=',variables('storageAccountName'),';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2015-05-01-preview').key1)]"
]