Azure: невозможно скопировать архивные большие двоичные объекты из одной учетной записи хранения в другую?

Всякий раз, когда я пытаюсь скопировать архивные большие двоичные объекты в другую учетную запись хранения и изменить ее уровень в месте назначения. Я получаю следующую ошибку:

Copy source blob has been modified. ErrorCode: CannotVerifyCopySource

Я пробовал копировать горячие / холодные капли в горячие / холодные / архивные. Я столкнулся с проблемой только при копировании архива в Hot / Cool / Archive. Кроме того, нет проблем при копировании в той же учетной записи хранения.

Я использую пакет SDK для Azure python:

blob_url = source_block_blob_service.make_blob_url(copy_from_container, blob_name, sas_token = sas)

dest_blob_service.copy_blob(copy_to_container, blob_name, blob_url, requires_sync = True, standard_blob_tier = 'Hot')

person Srinath    schedule 25.10.2019    source источник


Ответы (2)


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

На странице документации REST API:

Копирование заархивированного большого двоичного объекта (версия 2018-11-09 и новее)

Заархивированный большой двоичный объект можно скопировать в новый большой двоичный объект в той же учетной записи хранения. При этом первоначально заархивированный большой двоичный объект останется как есть. При копировании заархивированного большого двоичного объекта в качестве источника запрос должен содержать заголовок x-ms-access-tier, указывающий уровень целевого большого двоичного объекта. В конечном итоге данные будут скопированы в целевой BLOB-объект.

person Gaurav Mantri    schedule 25.10.2019

Пока большой двоичный объект находится на уровне доступа к архиву, он считается автономным и не может быть прочитан или изменен.

https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-rehydration

Чтобы прочитать каплю, вам нужно сначала регидратировать ее. Или, как описано в приведенной выше ссылке, вы также можете использовать операцию CopyBlob. Я не уверен, использует ли операция python SDK copy_blob () этот API за кулисами - возможно, нет, если это не сработало для вас.

person silent    schedule 25.10.2019
comment
Это изменилось в последней версии Storage REST API. Теперь вы можете изменить уровень доступа большого двоичного объекта в рамках операции копирования. Дополнительную информацию см. Здесь: docs.microsoft.com/en -us / rest / api / storageservices / copy-blob - person Gaurav Mantri; 25.10.2019