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

Azure函数读取Key Vault密钥更新延迟问题咨询

Azure Function Key Vault引用更新延迟问题排查与解决

问题分析

你的场景并非操作错误或场景误用,延迟生效的核心原因在于配置获取方式和Azure Functions的缓存机制:

  • 你通过Environment.GetEnvironmentVariable(..., EnvironmentVariableTarget.Process)读取配置,这个值是在函数进程启动时从Key Vault解析并注入到进程环境变量中的,进程运行期间不会自动刷新。
  • Azure Functions对Key Vault引用的默认缓存是1小时,但缓存刷新不会同步到已运行的进程环境变量中,必须重启进程才能加载新值。
  • 你之前的重启操作可能未彻底回收所有函数实例(比如消费计划下的实例调度延迟),导致旧值仍在生效。

解决办法

1. 改用IConfiguration获取配置(推荐)

Azure Functions推荐通过依赖注入的IConfiguration获取配置,它会自动处理Key Vault引用的刷新,无需重启进程即可获取最新值:

private readonly IConfiguration _config;
private readonly ILogger _log;

// 通过构造函数注入IConfiguration
public YourFunction(IConfiguration config, ILogger<YourFunction> log)
{
    _config = config;
    _log = log;
}

[FunctionName("YourFunction")]
public async Task Run([YourTriggerType] TriggerInput input)
{
    _log.LogInformation($"opening SQL connection");
    // 从IConfiguration中读取配置
    var cstr = _config["SqlConnectionStr"];
    using var sqlConnection = new SqlConnection(cstr);
    // ... 后续逻辑
}

2. 调整Key Vault引用的刷新间隔

如果需要更频繁地刷新密钥,可以在函数应用的配置中添加以下设置,自定义刷新间隔(示例为5分钟):

  • 配置项:AzureFunctionsJobHost__configuration__keyvault__refreshInterval
  • 值:00:05:00

3. 彻底重启函数应用

如果坚持使用环境变量的方式,需要确保彻底重启所有函数实例:

  • 在Azure门户的函数应用页面,点击顶部的「重启」按钮
  • 或使用Azure CLI命令:az functionapp restart --name <你的函数名> --resource-group <资源组名>

内容的提问来源于stack exchange,提问作者adam.k

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:52:57