Как динамически создать ссылку Azure KeyVault в шаблоне ARM?

Я использую следующий фрагмент кода в моем файле параметров шаблона ARM для получения секретного значения из keyvault:

"parameters": {
    "mailAccount": {
             "reference": {
               "keyVault": {
                    "id": "/subscriptions/GUID/resourceGroups/KeyVaultRG/providers/Microsoft.KeyVault/vaults/KeyVault"
                  },
                  "secretName": "mailAccount"
             }
           },

и в файле шаблона:

  "appSettings": [           
            {
              "name": "mailAccount",
              "value": "[parameters('mailAccount')]"
            },
            {

Я хотел бы знать, можно ли ссылаться на KeyVault по его имени, используя динамически созданный объект (т.е. не /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 при развертывании шаблонов, где хранятся аналогичные значения.
Необходимость иметь несколько KeyVaults оправдывается разделением ресурсов (и стоимости).

Теперь я вижу только ошибки проверки, говорящие ~ resourceId function cannot be used while referencing parameters,

Я не могу использовать вложенные \ связанные шаблоны (и выходные значения).

0 ответов

Что я обычно делаю, чтобы избежать этого ограничения функции resourceId, так это определять переменную со значением параметра, а затем использовать эту переменную вместо этого в функции resourceId.

Пример:

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

Затем, когда я ссылаюсь на ресурс KeyVault, я ссылаюсь на него, используя следующую переменную:

"[resourceId('Microsoft.KeyVault/vaults', variables('KeyVaultName')]"
Другие вопросы по тегам