You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在函数应用中使用带自定义前缀的Azure密钥保管库机密作为配置提供者

解决Azure函数应用中Key Vault机密前缀匹配问题

当Key Vault中的机密名称带有Configuration:前缀,而函数应用组件(如SignalR)需要无前缀的预定义配置键名时,可通过自定义配置加载逻辑实现名称映射,避免组件因找不到配置参数而失败。

实现步骤

  • 自定义机密名称映射逻辑
    在函数应用的配置初始化代码中,添加Key Vault配置源时,通过KeyVaultSecretManager自定义机密名称到配置键名的转换规则,自动去掉Configuration:前缀:

    var host = new HostBuilder()
        .ConfigureFunctionsWorkerDefaults()
        .ConfigureAppConfiguration((context, config) =>
        {
            var builtConfig = config.Build();
            var keyVaultUrl = builtConfig["KeyVaultUrl"];
            
            config.AddAzureKeyVault(
                new Uri(keyVaultUrl),
                new DefaultAzureCredential(),
                new KeyVaultSecretManager()
                {
                    GetKey = secret => 
                        secret.Name.StartsWith("Configuration:") 
                            ? secret.Name.Substring("Configuration:".Length) 
                            : secret.Name
                });
        })
        .Build();
    
    host.Run();
    
  • 验证配置有效性
    部署后可通过代码确认配置是否正确加载:

    // 通过IConfiguration读取示例
    private readonly IConfiguration _configuration;
    
    public MyFunction(IConfiguration configuration)
    {
        _configuration = configuration;
    }
    
    [Function("MyFunction")]
    public async Task Run([HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequest req)
    {
        var signalRConn = _configuration["AzureSignalRConnectionString"];
        // 验证连接字符串是否正常获取
    }
    

这种方式无需修改Key Vault中的现有机密名称,仅在配置加载阶段完成名称转换,确保所有带Configuration:前缀的机密都能以组件所需的键名被读取。

内容的提问来源于stack exchange,提问作者Surath Chandra Dutta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 03:05:33