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

使用Python创建Azure Service Bus队列共享访问策略时遇内部错误

问题解决:Azure Service Bus队列创建时添加Shared Access Policy报错

错误原因

你直接使用AuthorizationRule基类并指定type='SharedAccessPolicy'的方式不符合Azure Service Bus Python SDK的设计规范。SDK中针对Shared Access Policy有专门的子类SharedAccessAuthorizationRule,手动指定类型会导致服务端无法正确解析请求,从而抛出500错误。

正确实现代码

首先确保导入正确的授权规则类,然后用该类构建授权规则列表传入create_queue方法:

from azure.servicebus.admin import ServiceBusAdministrationClient, SharedAccessAuthorizationRule

# 初始化adminClient(假设你已完成客户端的正确初始化)
# adminClient = ServiceBusAdministrationClient.from_connection_string("<connection-string>")

# 创建带Shared Access Policy的队列
adminClient.create_queue(
    '<queue-name>',
    authorization_rules=[
        SharedAccessAuthorizationRule(
            key_name='my-send-policy',
            rights=['Send']
            # 若不需要手动指定密钥,SDK会自动生成;如需手动指定,添加以下参数:
            # primary_key='<your-primary-key>',
            # secondary_key='<your-secondary-key>'
        )
    ],
    default_message_time_to_live='P8D',
    duplicate_detection_history_time_window='PT1H',  # 修正原代码中的拼写错误(少了字母d)
    lock_duration='PT1M',
    max_delivery_count=100,
    max_size_in_megabytes=4096,
    max_message_size_in_kilobytes=256
)

关键要点说明

  • 使用正确的规则类:必须用SharedAccessAuthorizationRule而非AuthorizationRule基类,该类已内置对应Shared Access Policy的类型标识,无需手动指定type参数。
  • 权限参数:rights接受字符串列表,可选值为'Send'、'Listen'、'Manage',可组合使用(如['Send', 'Listen'])。
  • 密钥生成:若不手动提供primary_key和secondary_key,SDK会自动生成符合要求的密钥;手动指定时需确保密钥长度符合Azure要求(至少32个字符)。
  • 拼写修正:原代码中uplicate_detection_history_time_window存在拼写错误(缺少字母d),修正后可避免潜在的配置失效问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:47:42