AWS SDK Java TransferManager ограничивает размер загрузки - PullRequest
0 голосов
/ 03 ноября 2018

В настоящее время я загружаю папки S3, имя которых совпадает с prefix_ в локальный TMP_FOLDER через следующий фрагмент кода:

    TransferManager transferManager = TransferManagerBuilder.standard().withS3Client(s3Instance).build();
    MultipleFileDownload multipleFileDownload = transferManager.downloadDirectory(S3_BUCKET, "prefix_", TMP_FOLDER);
    multipleFileDownload.waitForCompletion();
    transferManager.shutdownNow();

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

Итак, мой вопрос, есть ли способ ограничить TransferManager или MultipleFileDownload только загрузкой данных определенного размера?

В идеале он должен загружать крошечные файлы один за другим, проверяя, превышает ли следующий файл установленный лимит для следующего файла, останавливается ли он (это позволит избежать неполного файла в конце)

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

1 Ответ

0 голосов
/ 03 ноября 2018

Вы можете использовать getProgress().getBytesTransferredMethod() для отслеживания размера файла, который загружается / загружается с S3.По достижении предела файла вы можете приостановить / прервать передачу S3 и продолжить позже. Следующие ссылки могут быть полезны для вас:

...