Azure ARM 模板如何让动态 keyvault appsettings 发挥作用

Azure ARM template how to get dynamic keyvault appsettings to function

我从快速入门模板 (https://github.com/Azure/azure-quickstart-templates/blob/master/101-functions-managed-identity/azuredeploy.json) 中获取了模板。

我想在 ARM 模板中将“@Microsoft.KeyVault(SecretUri=secret_uri_with_version)”应用程序设置添加到我的 keyvault。我怎样才能做到这一点?假设我的密钥库名称是 "MyKeyVault",我的秘密名称是 "MySecret"。我从 MS 文档中发现这种参考应该有效:

"WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('keyVaultResourceId')).secretUriWithVersion, ')')]",

但我只是收到错误消息 "The resource 'Microsoft.KeyVault/vaults/MyKeyVault' is not defined in the template."

我正在用这一行创建资源 ID:

"keyVaultResourceId": "[resourceId(subscription().subscriptionId, parameters('vaultResourceGroupName'), 'Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"

啊,好的,我明白了,您正在尝试从 Key Vault 中获取引用,而不是从机密中。密钥库显然没有 属性,因为它不是秘密,它是密钥库。所以你需要构造一个对你的秘密的引用:

reference(resourceId('rg','Microsoft.KeyVault/vaults/secrets','kvname','secretname').secretUriWithVersion)