ссылка на секрет KeyVault в шаблоне ARM завершается с ошибкой «Ресурс не определен в шаблоне» - PullRequest
3 голосов
/ 23 января 2020

Я пытаюсь создать ссылку на KeyVault в разделе AppConfig веб-приложения Azure. Ссылка KeyVault ссылается на секрет, который существует в KeyVault, который является частью другой группы ресурсов и, следовательно, не существует в шаблоне.

в соответствии с документацией функции шаблона reference () вы должны иметь возможность ссылаться на ресурс, который не является частью шаблона, если вы предоставляете полный resourceId и apiVersion.

Но когда я использую это для ссылки на секрет, я получаю ошибку проверки, которая говорит: :

Ошибка: Code = InvalidTemplate; Сообщение = проверка шаблона развертывания завершилась неудачно: 'ресурс' Microsoft.KeyVault / vaults // secrets / 'не определен в шаблоне.

Я следовал этому руководству . как использовать ссылки KeyVault в шаблонах ARM.

Ниже приведен пример ситуации, которая не работает.

{
  "type": "Microsoft.Web/sites",
  "apiVersion": "2016-08-01",
  "name": "[variables('webAppName')]",
  "location": "[resourceGroup().location]",
  "properties": {
    "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('serverFarmName'))]",
    "siteConfig": {
      "alwaysOn": true,
      "appSettings": [
        {
          "name": "<secretName>",
          "value": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('secretResourceId')).secretUriWithVersion, ')')]"
        },
      ]
    }
  },
  "identity": {
    "type": "SystemAssigned"
  },
  "dependsOn": [
    "[resourceId('Microsoft.Web/serverfarms', variables('serverFarmName'))]"
  ]
}

Переменная определяется следующим образом:

"variables": {
  "secretResourceId": "[resourceId(subscription().subscriptionId, parameters('keyVaultResourceGroup'), 'Microsoft.KeyVault/vaults/secrets', parameters('keyVaultName'), 'secretName')]"
},

Это что-то конкретное c для ссылок на секреты KeyVault?

Как только я попробую то же самое, но с ключом и секретом внутри шаблона, он будет работать отлично.

1 Ответ

2 голосов
/ 28 января 2020

В документации для функции reference упоминается, что второй параметр функции apiVersion требуется, если ссылающийся ресурс не предоставлен в том же шаблоне.

Итак, вместо

reference(variables('secretResourceId')).secretUriWithVersion

что-то вроде этого должно работать

reference(variables('secretResourceId'), '2018-02-14').secretUriWithVersion
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...