无法为Azure资源管理器模板使用资源功能

无法为Azure资源管理器模板使用资源功能,azure,azure-devops,azure-resource-manager,azure-template,Azure,Azure Devops,Azure Resource Manager,Azure Template,我的参数文件如下所示: { "$schema":"http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion":"1.0.0.0", "parameters":{ "siteName":{ "value":"my-api-application"

我的参数文件如下所示:

    {
       "$schema":"http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "siteName":{
             "value":"my-api-application"
          },
          "appServicePlanName":{
             "value":"MyServicePlan"
          },
          "siteLocation":{
             "value":"West US"
          },
          "vaultResourceGroup": {
            "value":"my-vault-res-group"
          },
          "vaultName": {
            "value":"my-keyvault"
          },
          "nodeEnv": {
            "value":"development"
          },
          "adminPassword": {
            "reference": {
              "keyVault": {
                "id": "/subscriptions/yyyyyyyy-xxxx-xxxx-xxxx-yyyyyyyy/resourceGroups/my-vault-res-group/providers/Microsoft.KeyVault/vaults/my-keyvault"
              },
              "secretName": "adminPassword"
            }
          }
       }
    }  
adminPassword值将从指定的KeyVault中提取,并带有特定的id。但是,我必须硬编码“id”值。
根据这一点,我可以使用如下内容指定id:

resourceId(subscription().subscriptionId, parameters('vaultResourceGroup'), 'Microsoft.KeyVault/vaults', parameters('vaultName'))]
但是,当使用上述语法/资源功能时,我在使用VSTS发布和部署我的应用程序服务时收到一个错误(我使用Azure资源组部署任务进行应用程序部署)。错误如下所示:

id必须采用以下格式:


不确定我做错了什么?

你没有做错任何事,这是故意的。必须在参数文件中使用文字资源ID(参数文件不允许使用函数)

如果有动态KeyVault id的方案,则可以使用嵌套展开:


如果您在本地计算机上手动通过PowerShell部署它,会有什么结果?
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}