Tje*_*erd 5 azure azure-resource-manager azure-keyvault azure-web-app-service azure-rm-template
我正在尝试在 Azure Web 应用程序的 AppConfig 部分中创建 KeyVault 引用。KeyVault 引用引用存在于 KeyVault 中的机密,该机密属于不同资源组的一部分,因此不存在于模板中。
根据文件的引用()模板函数,你应该能够引用的资源是不是模板的一部分,只要你提供完整的RESOURCEID和apiVersion。
但是当我用它来引用秘密时,我不断收到一个验证错误,它说:
错误:代码=无效模板;Message=部署模板验证失败:“模板中未定义资源“Microsoft.KeyVault/vaults//secrets/”。
我遵循了本指南。了解如何在 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'))]"
]
}
Run Code Online (Sandbox Code Playgroud)
变量定义如下:
"variables": {
"secretResourceId": "[resourceId(subscription().subscriptionId, parameters('keyVaultResourceGroup'), 'Microsoft.KeyVault/vaults/secrets', parameters('keyVaultName'), 'secretName')]"
},
Run Code Online (Sandbox Code Playgroud)
这是特定于对 KeyVault 机密的引用吗?
一旦我尝试相同但在模板中使用密钥库和秘密,它就可以正常工作。
该reference函数的文档提到,apiVersion当引用资源未在同一模板中提供时,该函数的第二个参数是必需的。
所以,而不是
reference(variables('secretResourceId')).secretUriWithVersion
Run Code Online (Sandbox Code Playgroud)
这样的事情应该工作
reference(variables('secretResourceId'), '2018-02-14').secretUriWithVersion
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1838 次 |
| 最近记录: |