Как загрузить большой двоичный объект в контейнер хранения azure с подкаталогами, используя python sdk? - PullRequest
0 голосов
/ 01 мая 2020

Я следил за этой статьей: Быстрый старт: Управление BLOB-объектами с помощью Python v12 SDK и документации для ContainerClient.upload_blob

Вот фрагмент для загрузки BLOB-объект с такой структурой каталогов: testcontainer / backup / HelloWorld.cab

bsc = BlobServiceClient.from_connection_string('<connection-string>')
cc = bsc.get_container_client('testcontainer')
cc.upload_blob(name='testcontainer/backup/HelloWorld.cab', data=open(r"\\network\path\to\backup\HelloWorld.cab", 'rb').read())

Но я получаю следующую ошибку. Любые идеи о том, что я делаю неправильно?

azure.storage.blob._generated.models._models_py3.StorageErrorException: Operation returned an invalid status 'The specifed resource name contains invalid characters.'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python3\lib\site-packages\azure\core\tracing\decorator.py", line 83, in wrapper_use_tracer
    return func(*args, **kwargs)
  File "C:\Python3\lib\site-packages\azure\storage\blob\_container_client.py", line 836, in upload_blob
    blob.upload_blob(
  File "C:\Python3\lib\site-packages\azure\core\tracing\decorator.py", line 83, in wrapper_use_tracer
    return func(*args, **kwargs)
  File "C:\Python3\lib\site-packages\azure\storage\blob\_blob_client.py", line 496, in upload_blob
    return upload_block_blob(**options)
  File "C:\Python3\lib\site-packages\azure\storage\blob\_upload_helpers.py", line 153, in upload_block_blob
    process_storage_error(error)
  File "C:\Python3\lib\site-packages\azure\storage\blob\_shared\response_handlers.py", line 147, in process_storage_error
    raise error
azure.core.exceptions.HttpResponseError: The specifed resource name contains invalid characters.
RequestId:71cad76d-801e-0097-8068-1fc9e0000000
Time:2020-05-01T03:28:33.5320153Z
ErrorCode:InvalidResourceName
Error:None

Примечание: я также видел этот ответ на этот вопрос: Microsoft Azure: Как создать подкаталог в контейнер BLOB-объектов

1 Ответ

1 голос
/ 01 мая 2020

Я могу воспроизвести эту проблему, если я использую недопустимое имя ресурса (именно об этом говорится в сообщении об ошибке).

Например, если я использую testcontainer в качестве имени моего контейнера больших двоичных объектов (это правильно), я могу загрузить большой двоичный объект.

Однако, если я использую testContainer в качестве имени моего контейнера больших двоичных объектов (что неверно, обратите внимание на прописную букву "C"), я получаю ту же ошибку, что и вы.

Пожалуйста, проверьте название контейнера BLOB-объекта и BLOB-объекта. Пожалуйста, смотрите эту ссылку для соглашения об именовании для BLOB-ресурсов: https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata.

...