Как динамически создать ссылку 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')]"