首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python从Blob Storage下载Blob

使用Python从Blob Storage下载Blob
EN

Stack Overflow用户
提问于 2021-05-03 17:24:48
回答 2查看 1.2K关注 0票数 2

我正在尝试下载一个blob上的excel文件。但是,它仍然会生成“指定的blob不存在”的错误。这个错误发生在blob_client.download_blob()上,尽管我可以获得blob_client。知道为什么或者我可以通过其他方式使用托管身份进行连接吗?

代码语言:javascript
复制
default_credential = DefaultAzureCredential()
 
blob_url = BlobServiceClient('url', credential = default_credential)
   
container_client = blob_url.get_container_client('xx-xx-data')

blob_client = container_client.get_blob_client('TEST.xlsx')

downloaded_blob = blob_client.download_blob()

df=pd.read_excel(downloaded_blob.content_as_bytes(), sheet_name='Test',skiprows=2)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-04 11:01:45

事实证明,我还必须在“Storage blob Data Contributor”之上提供“Reader”访问权限,以便能够识别Blob。不需要SAS URL。

票数 1
EN

Stack Overflow用户

发布于 2021-05-03 20:34:31

出现此错误的原因是,对Azure Blob存储的每个请求都必须是经过身份验证的请求。唯一的例外是当您从公共blob容器读取(下载) blob时。很可能,保存此blob的blob容器具有Private ACL,由于您发送的是未经身份验证的请求,因此会收到此错误。

我建议对具有Read权限的blob使用Shared Access Signature (SAS) URL,而不是简单的blob URL。由于SAS本身(sig部分)中嵌入了授权信息,因此只要SAS有效且未过期,您就应该能够下载blob。

有关共享访问签名:https://docs.microsoft.com/en-us/rest/api/storageservices/delegate-access-with-shared-access-signature的更多信息,请参阅此。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67366464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档