Невозможно использовать функции ресурсов для шаблонов Azure Resource Manager

Мой файл параметров выглядит следующим образом:

    {
       "$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.
В соответствии с этим link, я мог бы указать идентификатор, используя что-то вроде этого:

resourceId(subscription().subscriptionId, parameters('vaultResourceGroup'), 'Microsoft.KeyVault/vaults', parameters('vaultName'))]

Однако при использовании вышеуказанного синтаксиса/функций ресурсов я получаю сообщение об ошибке при выпуске и развертывании службы приложений с помощью VSTS (я использовал развертывание группы ресурсов Azure< /strong> задача для развертывания приложения). Ошибка примерно такая:

Идентификатор должен иметь следующий формат:

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}  

Не уверен, что я делаю неправильно?


person CoderX    schedule 04.06.2018    source источник
comment
Что получится, если вы развернете его через PowerShell вручную на локальном компьютере? docs.microsoft.com/ en-us/azure/azure-stack/user/   -  person starian chen-MSFT    schedule 05.06.2018


Ответы (1)


Вы не делаете ничего плохого, это сделано намеренно. Вы должны использовать буквальный идентификатор ресурса в файле параметров (файлы параметров не позволяют использовать функции).

Если у вас есть сценарий для динамического идентификатора KeyVault, вы можете использовать вложенное развертывание:

https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-keyvault-parameter#reference-a-secret-with-dynamic-id

person bmoore-msft    schedule 05.06.2018