【问题标题】:SAS to access blob container (azure/python)SAS 访问 blob 容器(天蓝色/python)
【发布时间】:2020-03-30 21:17:44
【问题描述】:

我想在不共享我的整个存储帐户密钥的情况下授予对我帐户中单个容器的有限访问权限。我在特定于容器的 Azure 存储资源管理器中生成了共享访问签名。

container right-click & generate SAS

example of output from generate SAS

当我尝试使用 blockblobservice 列出文件时,我收到以下错误。使用 get_blob_to_path 时出现同样的错误。

from azure.storage.blob import BlockBlobService, BlobPermissions

sas_container = 'nwe-statements'
sas_token = '?st=2019-12-05T21%3A09%3A12Z&se=2020-01-31T21%3A13%3A00Z&sp=racwdl&sv=2018-03-28&sr=c&sig=YLk2UWxPcqkDl5a8nWtBYcw%3DxWuAsfFI1ch5TwrbAxvk'
example_file = '1470-4126.pdf'

def sas_list():
    blob_service = BlockBlobService(account_name='pretend',sas_token=sas_token)
    blob_list = blob_service.list_blobs(sas_container)
    print(blob_list)

Traceback(最近一次调用最后一次): 文件“/home/brett/jetco/django_jetco/O365/nwe_statements/blob_connect.py”,第 24 行,在 sas_list() 文件“/home/brett/jetco/django_jetco/O365/nwe_statements/blob_connect.py”,第 11 行,在 sas_list blob_list = blob_service.list_blobs(sas_container) 文件“/home/brett/jetco/env/lib/python3.6/site-packages/azure/storage/blob/baseblobservice.py”,第 1214 行,在 list_blobs resp = self._list_blobs(*args, **kwargs) _list_blobs 中的文件“/home/brett/jetco/env/lib/python3.6/site-packages/azure/storage/blob/baseblobservice.py”,第 1285 行 return self._perform_request(request, _convert_xml_to_blob_list, operation_context=_context) _perform_request 中的文件“/home/brett/jetco/env/lib/python3.6/site-packages/azure/storage/storageclient.py”,第 280 行 提高前任 _perform_request 中的文件“/home/brett/jetco/env/lib/python3.6/site-packages/azure/storage/storageclient.py”,第 248 行 提高前任 _perform_request 中的文件“/home/brett/jetco/env/lib/python3.6/site-packages/azure/storage/storageclient.py”,第 235 行 _http_error_handler(HTTPError(response.status, response.message, response.headers, response.body)) _http_error_handler 中的文件“/home/brett/jetco/env/lib/python3.6/site-packages/azure/storage/_error.py”,第 114 行 引发 AzureHttpError(消息,http_error.status) azure.common.AzureHttpError:服务器无法对请求进行身份验证。确保 Authorization 标头的值正确形成,包括签名。 AuthenticationFailedServer 未能验证请求。确保 Authorization 标头的值正确形成,包括签名。 请求ID:2d2370dc-f01e-0028-0fb3-ab47c9000000 时间:2019-12-05T21:33:23.3062345Z签名不匹配。使用的签名字符串是 racwdl

2020-01-31T21:13:00Z /blob/pretend/nwe-statements

2018-03-28

【问题讨论】:

    标签: python azure-blob-storage


    【解决方案1】:

    我可以重现您的问题,问题是由软件包引起的,请卸载旧的azure-storage并安装azure-storage-blob 2.1.0,然后它就可以正常工作了。

    pip uninstall azure-storage
    pip install azure-storage-blob==2.1.0
    

    此外,您应该注意azure-storage-blob 的新版本v12,与v2.1 版本不同。

    v12 - https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python

    v2.1 - https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python-legacy

    【讨论】:

    • Joy - 你在 stackoverflow 上戳了我的樱桃,这样的荣誉的后果是你不会得到满足......因为我需要 15 个声望点来将你的答案标记为正确。解决方案立即生效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    相关资源
    最近更新 更多