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

使用Python操作Azure Blob Storage:创建容器正常但列取时遇授权错误

Azure Blob Storage 列取容器权限问题解决建议

问题场景

环境:Azure Blob Storage v12.13.1、Python 3.9.15
使用SAS URL创建BlobServiceClient后,可正常执行容器创建操作:

# Create the container
blob_service_client = BlobServiceClient(account_url=sas_url)
container_client = blob_service_client.create_container(container_name)

但执行容器列取操作时报错:

all_containers = blob_service_client.list_containers()
for i,r in enumerate(all_containers):
    print(r)

错误信息:

HttpResponseError: This request is not authorized to perform this operation using this resource type.
RequestId:a04349e6-b01e-0010-58ac-fa6495000000

原因分析

核心问题是你使用的SAS URL缺少容器列表权限:

  • 创建容器操作需要Create(c)权限,你的SAS已包含该权限,因此创建成功;
  • 列取所有容器操作需要List(l)权限,当前SAS未授予该权限,触发授权错误。

解决步骤

1. 重新生成包含List权限的SAS URL

若通过Azure门户生成:

  • 进入存储账户的「共享访问签名」页面;
  • 在「权限」选项中勾选List权限(同时保留Create权限以维持原功能);
  • 按需设置过期时间、资源类型等参数后,生成新的SAS URL。

若通过代码生成:

确保生成SAS令牌时,permission参数包含'l'和'c'权限,示例:

from azure.storage.blob import generate_account_sas, ResourceTypes, AccountSasPermissions

sas_token = generate_account_sas(
    account_name="your_account_name",
    account_key="your_account_key",
    resource_types=ResourceTypes(service=True, container=True),
    permission=AccountSasPermissions(list=True, create=True),
    expiry="2024-12-31"
)
sas_url = f"https://your_account_name.blob.core.windows.net/?{sas_token}"

2. 验证权限生效

用新生成的SAS URL替换原代码中的sas_url,重新执行列取容器的代码,确认操作正常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:51:19