【发布时间】:2018-08-28 02:17:03
【问题描述】:
我在我的 ARM 模板参数文件中使用以下代码从 keyvault 中检索秘密值:
"parameters": {
"mailAccount": {
"reference": {
"keyVault": {
"id": "/subscriptions/GUID/resourceGroups/KeyVaultRG/providers/Microsoft.KeyVault/vaults/KeyVault"
},
"secretName": "mailAccount"
}
},
并在模板文件中:
"appSettings": [
{
"name": "mailAccount",
"value": "[parameters('mailAccount')]"
},
{
我想知道是否可以使用动态构造的对象(即不是 /subscriptions/GUID/resourceGroups/KeyVaultRG/providers/Microsoft.KeyVault/vaults/KeyVault 而是 [resourceId(subscription().subscriptionId, resourcegroup().name, 'Microsoft.KeyVault/vaults', parameters('KeyVaultName'))])或 [resourceId('Microsoft.KeyVault/vaults', parameters('KeyVaultName'))] 来通过名称引用 KeyVault?
事实上,主要目标是在部署模板时能够传递不同的 KeyVault 名称 - 其中存储了相似的值。
资源(和成本)分离证明了需要多个 KeyVault 是合理的。
现在我只看到验证错误提示 ~resourceId function cannot be used while referencing parameters。
我不能使用嵌套\链接的模板(和输出值)。
【问题讨论】:
-
嵌套/链接模板是解决此问题的唯一方法。您能分享一下阻止您使用此解决方案的原因吗?
-
你不需要使用输出,但你确实需要使用嵌套模板(正如 Rich 提到的)
-
在我的代码中以编程方式创建资源(.Net Core Web 应用程序 + Azure API 调用)期间,我正在使用此模板。不幸的是,在使用 REST API 进行部署时,我无法使用嵌套模板。
标签: azure azure-resource-manager azure-keyvault arm-template