"Тело запроса слишком велико и превышает максимально допустимый предел" при загрузке блоба в 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 и выше.
Больше информации здесь.