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

如何让Azure Key Vault密钥与Web App Job的ServiceBusTrigger属性配合使用?

解决Azure函数ServiceBusTrigger结合KeyVault的配置方案

核心思路

[ServiceBusTrigger]属性的Connection参数要求的是配置键名,而非直接写连接字符串或KeyVault引用。我们只需要把这个配置键映射到KeyVault中的秘密即可,无需修改现有代码。

1. 保持现有代码不变

你的函数代码无需任何改动,因为Connection="ServiceBusConnectionString"是读取配置文件/应用设置中的对应键值:

public async Task MessageReceived(
    [ServiceBusTrigger("some-queue", Connection = "ServiceBusConnectionString")] 
    SomeClass someInstance, 
    int deliveryCount, 
    DateTime enqueuedTimeUtc, 
    string messageId, 
    ILogger log)
{
    // 消息处理代码
}

2. 在Azure门户配置应用设置映射到KeyVault

部署到Azure后,按以下步骤配置:

  • 打开你的Web App Job(函数应用),进入配置 > 应用程序设置
  • 点击「新建应用程序设置」,填入:
    • 名称:ServiceBusConnectionString
    • 值:@Microsoft.KeyVault(VaultName=myvault;SecretName=存储ServiceBus连接字符串的秘密名称)
    • (替换myvault为你的密钥库名称,存储ServiceBus连接字符串的秘密名称为你存在KeyVault里的ServiceBus连接字符串秘密名)
  • 保存设置

3. 配置函数应用访问KeyVault的权限

必须给函数应用分配读取KeyVault秘密的权限:

  • 进入函数应用的身份 > 系统分配,开启状态并保存,获取系统托管身份
  • 打开你的KeyVault,进入访问策略 > 添加访问策略:
    • 权限:选择「秘密权限」中的「获取」和「列表」
    • 主体:搜索你的函数应用名称并选中
    • 保存访问策略

本地开发提示

本地测试时,直接在local.settings.json中填入实际的ServiceBus连接字符串即可,无需KeyVault引用:

{
  "Values": {
    "ServiceBusConnectionString": "你的实际ServiceBus连接字符串"
  }
}

内容的提问来源于stack exchange,提问作者tonycdp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:10:48