如何用Python生成Azure存储容器SAS URL?解决CopySourceNotVerified报错
解决方案
你遇到的CopySourceNotVerified错误,核心原因是使用了**Blob级SAS(sr=b)**作为复制源,而Blob复制操作要求源SAS具备足够的权限范围,容器级SAS(sr=c)更适配这个场景。
要生成sr=c的容器级SAS Token,需要替换原代码中的generate_blob_sas为generate_container_sas函数,同时调整对应的权限枚举和参数:
from azure.storage.blob import generate_container_sas, ContainerSasPermissions from datetime import datetime, timedelta account_name = 'account' account_key = 'key' container_name = 'feed' # 生成容器级SAS Token requiredSASToken = generate_container_sas( account_name=account_name, container_name=container_name, account_key=account_key, permission=ContainerSasPermissions(read=True), expiry=datetime.utcnow() + timedelta(hours=24) )
关键调整说明:
- 替换生成函数:用
generate_container_sas替代generate_blob_sas,该函数专门用于生成容器级SAS,自动设置sr=c - 权限枚举切换:使用
ContainerSasPermissions而非BlobSasPermissions,确保权限范围匹配容器级操作 - 移除Blob参数:不需要再指定
blob_name,因为SAS的作用范围是整个容器
这样生成的SAS Token就会包含sr=c,用它作为复制源即可通过验证,完成Blob复制操作。
内容的提问来源于stack exchange,提问作者Deepak Kothari
相关产品推荐
相关产品推荐

