Как исправить «AzureMissingResourceHttpError. ErrorCode: ResourceNotFound» при доступе к закрытым контейнерам больших двоичных объектов - python? - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь получить доступ к файлам больших двоичных объектов в контейнере больших двоичных объектов в учетной записи хранения на Azure через файл azure.blob.storage в python.Существуют контейнеры BLOB-объектов с открытым уровнем доступа, установленным как «private», «blob» и «container»

. Я создал токен SAS для учетной записи хранения через портал Azure со всеми разрешениями.Из кода Python я могу получить доступ к файлам в контейнере BLOB-объектов с уровнем доступа «контейнер».Однако я не могу получить доступ к контейнерам с уровнями «blob» и «private»

from datetime import datetime, timedelta


def test_check_blob_containers():
    account_name = ''
    account_key = ''
    container_name = ''

    #sas_token = get_sas_token(account_name, account_key, container_name)
    # I have used the sas token generated through get_sas_token as well as the one retrieved from the azure portal which was created manually.

    sas_token = 'sas token retrieved from the azure portal'
    block_blob_service = BlockBlobService(
        account_name=account_name, sas_token=quote(sas_token))
    blobs = block_blob_service.list_blobs(container_name=container_name)
    for b in blobs:
        print(b.name)

def get_sas_token(account_name, account_key, container_name):
    blob_service = BlockBlobService(account_name=account_name, account_key=account_key)
    sas_token = blob_service.generate_container_shared_access_signature(container_name, ContainerPermissions.LIST, datetime.utcnow() + timedelta(hours=1))
    return sas_token

Я получаю следующую ошибку:

повышение ex azure.common.AzureMissingResourceHttpError:указанный ресурс не существует.ErrorCode: ResourceNotFound E ResourceNotFound Указанный ресурс не существует.E RequestId: ea63a1df-001e-0003-6ffd-719913000000 E Время: 2019-09-23T10: 56: 42,8358696Z

1 Ответ

0 голосов
/ 24 сентября 2019

Я могу воспроизвести вашу проблему на моей стороне, проблема была вызвана quote(), просто удалите ее.

enter image description here

Эта строка должнабыть как ниже.

block_blob_service = BlockBlobService(account_name=account_name, sas_token=sas_token)
...