Я новичок в Amazon S3 и работаю над чем-то с S3. Я загрузил много файлов в корзину S3 с помощью Java. У меня есть объекты в S3 с такими именами, как Demo/demo1.txt, Demo/demo2.txt, Demo/demo3.txt. У меня есть почти 1000 отдельных файлов до demo1000.txt в папке Demo/. Я загрузил их с Java, используя приведенный ниже код.
s3Client.upload(bucketName, inputStream, objectKey, ObjectMetaData);
Как я могу заархивировать всю эту демонстрацию/объект, содержащий эти 1000 файлов, в самом S3, используя AWS API для Java?
Загрузите объекты, заархивируйте их локально, используя предпочтительную библиотеку zip для Java или каким-либо другим способом (например, с помощью инструмента zip), загрузите файл ZIP на S3, при необходимости удалите старые объекты.
AWS SDK для Java не предлагает операций для архивирования файлов. Однако вы можете написать собственную логику Java для выполнения этого варианта использования. Создание внутренней логики для динамического архивирования certian файлов (т.е. изображений) является допустимым вариантом использования.
Например, в приведенном ниже приложении для управления фоторесурсами файлы JPG извлекаются на основе тегов, выбранных пользователем. Затем соответствующие файлы извлекаются из корзины S3, помещаются в ZIP-файл, сохраняются в отдельной корзине, и ZIP-файл предварительно подписывается, чтобы пользователь мог получить файлы JPG, соответствующие тегам.
Обратитесь к приведенному ниже документу, который включает динамически сжатые файлы изображений. Логика Java, которую вы ищете, находится в примере Photo Asset Management, который вы можете найти здесь, в библиотеке кода AWS.
См. метод public byte[] listBytesToZip()
в классе S3Service
.
Не было бы лучше, если бы вместо этого вы сначала загрузили zip-файл?