【问题标题】:How to dynamically create Azure KeyVault reference in ARM template?如何在 ARM 模板中动态创建 Azure KeyVault 引用?
【发布时间】: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


【解决方案1】:

为了避免resourceId函数的这种限制,我通常做的是用参数的值定义一个变量,然后在resourceId函数中使用该变量。

例子:

"parameters": {
        "KeyVaultName": {
            "type": "string",
            "metadata": {
                "description": "Key Vault Name"
            }
        }
},
"variables": {
    "KeyVaultName": "[parameters('KeyVaultName')]"
}

然后,当我引用 KeyVault 资源时,我使用如下变量引用它:

"[resourceId('Microsoft.KeyVault/vaults', variables('KeyVaultName')]"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 2022-01-22
    相关资源
    最近更新 更多