"Тело запроса слишком велико и превышает максимально допустимый предел" при загрузке блоба в Azure

Я пытаюсь загрузить файл объемом 300 ГБ в хранилище BLOB-объектов Azure. Ниже приведен код, который я использую:

// content = array of bytes ~ 300 GB
using (var stream = new MemoryStream(content))
{
      var blobRequestOptions = new BlobRequestOptions
      {
          ParallelOperationThreadCount = Microsoft.WindowsAzure.Storage.Shared.Protocol.Constants.MaxParallelOperationThreadCount
      };
      blob.UploadFromStream(stream, options: blobRequestOptions);
}

Эта операция завершается с ошибкой следующего сообщения:

Тело запроса слишком велико и превышает максимально допустимый предел

1 ответ

Решение

Я считаю, что проблема (за комментарий, подтверждающий более старую версию SDK) - это номер версии клиентского SDK. Начиная с версии 8.0, поддерживаются большие ( 200 ГБ -> 4,77 ТБ) размеры блоков блобов (с блоками теперь до 100 МБ по сравнению со старым пределом 4 МБ). Ограничение в 50 000 блоков все еще применяется (таким образом, блоки размером 100 МБ х 50000 обеспечивают размер 4,77 ТБ).

Предыдущие версии SDK были ограничены блоками размером 4 МБ и ограничением размера блоба 200 ГБ.

Блоки больших размеров поддерживаются в самых последних выпусках клиентской библиотеки.NET (версия 8.0.0), клиентской библиотеки Java (версия 5.0.0), клиентской библиотеки Node.js (версия 2.0.0) и команды AzCopy. -Line Utility (версия 5.2.0). Вы также можете напрямую использовать REST API, как всегда. Большие блочные объекты поддерживаются REST API версии 2016-05-31 и выше.

Больше информации здесь.

Другие вопросы по тегам