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

使用托管标识配置Python Azure Functions与Service Bus连接失败求助

解决Azure Functions(Python)托管标识连接Service Bus的配置问题

问题根源

错误提示说明运行时仍在尝试查找传统连接字符串,而非使用托管标识完成身份验证,核心是缺少明确的凭证类型配置。

解决方案步骤

1. 补充应用设置的凭证类型

在Azure门户的应用设置中,新增以下配置项:

MySvcConn__credential=managedidentity

该配置会告知Service Bus扩展使用托管标识而非连接字符串进行身份验证。

2. 配置托管标识的权限

  • 若使用系统分配托管标识:
    1. 进入目标Service Bus命名空间的「访问控制(IAM)」页面
    2. 添加角色分配,选择Azure Service Bus Data Receiver角色,将Function App的系统分配标识添加为成员
  • 若使用用户分配托管标识:
    1. 完成上述权限配置后,额外在应用设置中添加:
      MySvcConn__clientId=<你的用户分配标识Client ID>
      

3. 确保扩展Bundle版本兼容

你的host.json中扩展Bundle版本范围是[2.*, 3.0.0),建议指定更具体的最新兼容版本(如[2.15.0, 3.0.0)),确保Service Bus扩展支持托管标识特性。更新后的host.json片段:

{
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[2.15.0, 3.0.0)"
  }
}

4. 重启Function App生效

完成所有配置后,重启Function App确保设置生效,此时触发器应能通过托管标识正常连接Service Bus队列。

关键说明

  • 使用__fullyQualifiedNamespace配置时,必须配合__credential=managedidentity明确身份验证方式,否则运行时会默认解析为传统连接字符串,触发错误。
  • 必须配置Azure Service Bus Data Receiver权限,否则会出现身份验证通过但无法读取队列消息的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 04:18:13