Каков наилучший способ получить все объекты из корзины S3

#java #amazon-web-services #amazon-s3 #aws-lambda

#java #amazon-веб-сервисы #amazon-s3 #aws-lambda

Вопрос:

Чтобы получить все объекты из моей корзины S3 программно, я в настоящее время использую ListObjectsV2Request первый. Затем я перебираю все полученные ключи и получаю отдельные объекты для каждого ключа с помощью a GetObjectRequest .

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

Есть ли какой-либо другой лучший способ получить все объекты из корзины S3, возможно, только с одним запросом?

Комментарии:

1. К сожалению, нет, хуже, если у вас много объектов, которые вам нужно разбить на страницы.

2. Пожалуйста, добавьте сюда некоторые подробности: 1. Каким должен быть результат вашей программы (то, что вы отправляете во внешний интерфейс)? 2. Что вы называете проблемой производительности — высокая память или просто медленная обработка или что-то еще?

3. @scholl123 Пожалуйста, отредактируйте свой вопрос, чтобы добавить больше деталей. Что вы подразумеваете под «получить все объекты» — вы имеете в виду загрузку, или вы просто хотите «перечислить» их во внешнем интерфейсе? Сколько объектов находится в корзине? (Пожалуйста, отредактируйте свой вопрос с этими деталями, а не отвечайте в комментарии).

Ответ №1:

Вы можете попробовать использовать TransferManager , возможно, это решит вашу проблему. https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/examples-s3-transfermanager.html#tranfermanager-download-directory

Комментарии:

1. Но это означало бы, что мне нужно было бы куда-то поместить файлы, верно? Я просто хочу обработать содержимое в моей программе, аналогично S3AsyncClient. GetObject, где я могу использовать AsyncResponseTransformer. toBytes

Ответ №2:

Если ваша задача состоит в том, чтобы скопировать все файлы из одной корзины в другую, я бы посоветовал вам попробовать https://rclone.org /.

Комментарии:

1. Спасибо за ваш ответ, но моя задача — прочитать все объекты из корзины S3 и использовать данные в моем интерфейсе, поэтому нет, я не хочу хранить файлы где-то еще, я просто хочу использовать данные.