我正在尝试下载一个blob上的excel文件。但是,它仍然会生成“指定的blob不存在”的错误。这个错误发生在blob_client.download_blob()上,尽管我可以获得blob_client。知道为什么或者我可以通过其他方式使用托管身份进行连接吗?
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)发布于 2021-05-04 11:01:45
事实证明,我还必须在“Storage blob Data Contributor”之上提供“Reader”访问权限,以便能够识别Blob。不需要SAS URL。
发布于 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的更多信息,请参阅此。
https://stackoverflow.com/questions/67366464
复制相似问题