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

Databricks访问Azure Blob存储报Authorization授权失败错误

问题原因
  • 核心错误是将SAS共享访问签名令牌误作为存储账户访问密钥传入了account_key参数。AppendBlobService的account_key参数仅接受存储账户生成的512位Base64格式主/辅助访问密钥,你传入的字符串以?开头、包含sv/sig/se等SAS标准字段,属于典型的SAS令牌,传入后SDK会按照共享密钥认证规则生成签名,和服务端预期的认证格式完全不匹配,直接触发签名校验失败。
  • 你传入的SAS令牌本身已过期:令牌标注的到期时间为2022-06-14,早已超出有效期限,即使传参方式正确也无法通过认证。
  • 老版本azure-storage-blob SDK的AppendBlobService本身不支持通过account_key参数传入SAS令牌完成认证,没有对应兼容逻辑。
修复方案
  • 方案一(推荐,适配你当前代码逻辑):使用存储账户正式访问密钥初始化客户端。到Azure门户对应存储账户的「访问密钥」页面,复制完整的主密钥/辅助密钥,替换account_key位置的现有SAS串即可,注意不要保留?前缀或其他多余字符。
    修正后的初始化代码示例:
    from azure.storage.blob import AppendBlobService
    # 替换为存储账户实际访问密钥,为无特殊前缀的Base64字符串
    abs = AppendBlobService(
        account_name='azdevstoreforlogs',
        account_key='<替换为你的存储账户访问密钥>'
    )
    
  • 方案二:如果必须使用SAS令牌认证,首先重新生成有效期覆盖当前操作时间的新SAS令牌,不要使用已过期的旧令牌;其次不要通过account_key参数传SAS,要么将SAS拼入存储连接字符串初始化客户端,要么升级到新版Azure Blob Storage SDK后使用专门的SAS凭证类完成认证。
  • 额外代码修正:你代码中re.match(filter, blob.name)直接使用了Python内置关键字filter作为匹配规则变量,会触发运行时报错,需提前自定义好正则匹配规则后再传入re.match。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:06:21