在ARM模板中引用KeyVault机密失败,并显示'资源未在模板中定义'

问题描述 投票:1回答:1

我正在尝试在Azure Web应用程序的AppConfig部分中创建KeyVault参考。KeyVault参考引用了一个密钥库中存在的秘密,该密钥库是另一个资源组的一部分,因此在模板中不存在。

根据reference()模板函数的documentation,只要您提供完整的resourceId和apiVersion,您就应该能够引用不属于模板的资源。

但是当我使用它来引用机密时,我不断收到验证错误,它显示:

错误:代码= InvalidTemplate; Message =部署模板验证失败:“资源'Microsoft.KeyVault / vaults // secrets /'不是在模板中定义。

我关注了this guide。有关如何在ARM模板中使用KeyVault引用的信息。

下面的代码是不起作用的情况的示例。

{
  "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')]"

},

这是对KeyVault机密的引用所特有的吗?

我尝试同样的方法,但是在模板中具有密钥库和秘密,就可以很好地工作。

azure azure-web-sites devops azure-keyvault arm-template
1个回答
0
投票

reference function的文档中提到,当未在同一模板中提供引用资源时,该函数的第二个参数reference是必需的。

因此,而不是

apiVersion

类似的东西应该起作用

reference(variables('secretResourceId')).secretUriWithVersion
© www.soinside.com 2019 - 2024. All rights reserved.