如何为应用服务槽使用 ResourceID 函数

时间:2021-03-01 19:00:26

标签: azure-devops arm-template

我在 arm 模板中为我的密钥保管库分配了资源策略,一切正常,直到我想为应用服务的部署槽分配策略。

已创建应用服务的插槽,但在我分配访问权限的 arm 模板中(即授予插槽访问密钥库的权限),我使用它来获取资源 ID:

"resourceId": {
            "type": "string",
            "defaultValue": "[resourceId(parameters('resourceGroup'), parameters('resourceType'), parameters('resourceName'))]",
            "metadata": {
                "description": "The resource id of the resource to set the policy for. Defaults to the ResourceId function of the resource's resource group, type and name."
            }
        }

我收到此错误: 无法评估模板语言函数“resourceId”:函数只需要一个多段参数,该参数必须是资源类型,包括资源提供程序命名空间。当前函数参数“MyResourceGroupName,Microsoft.Web/sites,MyAppServiceName/slots/Pre”。

我不太确定我应该在这里传递什么,但我需要 resourceId 以便可以将其添加到密钥保管库中的访问策略中。由于同一个arm模板适用于普通站点,所以slot一定有一些特别之处吗?

1 个答案:

答案 0 :(得分:1)

您必须在 Web App 名称和阶段名称中包含资源提供程序名称 'Microsoft.Web/Sites/Slots'。您只有网络应用名称。

尝试使用这个:

"resourceId": {
  "type": "string",
  "defaultValue": "[resourceId('Microsoft.Web/sites/slots', parameters('resourceName'), parameters('stageName'))]"
}