azure - 在 ARM 模板中引用 KeyVault secret 失败,并显示 'The resource is not defined in the template'

标签 azure azure-web-app-service azure-resource-manager azure-keyvault azure-rm-template

我正在尝试在 Azure Web 应用程序的 AppConfig 部分中创建 KeyVault 引用。 KeyVault 引用引用了 KeyVault 中存在的 key ,该 key 属于不同的资源组,因此模板中不存在。

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

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

Error: Code=InvalidTemplate; Message=Deployment template validation failed: 'The resource 'Microsoft.KeyVault/vaults//secrets/' is not defined in the template.

我关注了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 secret 的引用吗?

一旦我尝试相同的方法,但在模板内使用 keystore 和 secret ,它就可以完美地工作。

最佳答案

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

所以,而不是

reference(variables('secretResourceId')).secretUriWithVersion

类似的东西应该有效

reference(variables('secretResourceId'), '2018-02-14').secretUriWithVersion

关于azure - 在 ARM 模板中引用 KeyVault secret 失败,并显示 'The resource is not defined in the template',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59875280/

相关文章:

c# - 邮件未使用 sendgrid 从 azure 门户 Web 应用程序发送

azure - EventHub 的 Azure 部署期间出现 429 错误

powershell - 应用服务的 Azure 资源组模板 "Mobile App"

azure - Azure 区域之间的数据传输如何进行?

azure - DocumentDB : Is it possible to remove auto generated tags, _Etag、_ts 等?

wordpress - 不从源部署时如何修改 web.config

Azure 应用服务部署 - 无法覆盖 appsettings.json

Azure ARM 模板 - 是否可以获取现有资源名称以将它们指定为新 ARM 部署中的参数或变量?

c# - 如何将附加 blob 上传到 azure 而不会出现大小限制异常?

.net - Azure 上托管的 HTTPS WCF 配置问题