我正在尝试在 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/