Azure应用配置-密钥保管库引用出现问题。当前,我有一个应用配置密钥(FunctionApp:Replication:Regions),该密钥具有多个值(asia、we、sae)。因此,连接是一对多的。我为每个值添加了密钥保管库引用。但问题是,我不知道如何从函数应用读取数据,以获取密钥保管库中的值。
目前,我正在使用两种服务:ConfigurationClient
-获取一个键中的所有值。IConfigurationRefresher
来刷新应用程序配置,以获取所做的最新更改,而无需重新启动函数。
示例(存储服务):
private readonly ConfigurationClient _client;
private readonly IConfigurationRefresher _configurationRefresher;
public StorageService(ConfigurationClient client, IConfigurationRefresherProvider refresherProvider)
{
_client = client,
_configurationRefresher = refresherProvider.Refreshers.First();
}
SettingSelector settingSelector = new SettingSelector()
{
KeyFilter = "FunctionApp:Replication:Regions"
};
var regions = _client.GetConfigurationSettings(settingSelector).ToList();
示例(启动):
public override void Configure(IFunctionsHostBuilder builder){
ConfigurationClient appConfigurations = new
ConfigurationClient(appConfigurationsConnectionString);
builder.Services.AddSingleton<ConfigurationClient>(appConfigurations);
}
public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
{
builder.ConfigurationBuilder.AddAzureAppConfiguration(options =>
{
options.Connect(Environment.GetEnvironmentVariable("ConnectionString")).Select("FunctionApp:*").ConfigureRefresh(refreshOptions =>
{
refreshOptions.Register("FunctionApp:Replication:Regions", refreshAll: true);
});
});
}
当我尝试获取值-var regions = _client.GetConfigurationSettings(settingSelector).ToList();
时,它返回以下内容:
{"uri":"https://appconfigurationkeyvalut.vault.azure.net/secrets/tableasia"},
{"uri":"https://appconfigurationkeyvalut.vault.azure.net/secrets/tablewe"},
{"uri":"https://appconfigurationkeyvalut.vault.azure.net/secrets/tablesea"}
我不知道如何从钥匙库中得到价值,有什么想法吗?
1条答案
按热度按时间lymnna711#
ConfigurationClient
。它不会为你解析密钥保管库引用。Microsoft.Extensions.Configuration.AzureAppConfiguration
库将解析密钥保管库引用并使机密值在IConfiguration
中可用。startup.cs
类似于:1.您的密钥库引用的机密值可以通过
IConfiguration
在您的Run
函数中自动访问。例如,_configuration["FunctionApp:Replication:Regions:Asia"]
。