Поиск файлов без учета регистра из s3 bucket - PullRequest
0 голосов
/ 14 февраля 2020

Я использую Spring Boot SDK для aws, и я хочу проверить свою корзину s3, чтобы проверить, существует файл или нет, игнорируя регистр имени файла. Прямо сейчас я ищу, выходит ли файл:

s3client.doesObjectExist(bucketname,objectname)

objectname - ключ файла для s3 с полным именем файла в конце. Итак, я хочу сделать следующее: если путь к файлу равен a/b/c/d/car.pdf, приведенный выше метод должен вернуть «true», даже если фактический путь к файлу в s3 равен: a/b/c/d/CAR.pdf, a/b/c/d/caR.pdf или a/b/c/D/car.pdf .

1 Ответ

1 голос
/ 14 февраля 2020
ObjectListing listObjects(String bucketName) throws SdkClientException, AmazonServiceException

Возвращает список сводной информации об объектах в указанных сегментах. Результаты списка всегда возвращаются в лексикографическом (алфавитном) порядке.

Поскольку сегменты могут содержать практически неограниченное количество ключей, полные результаты запроса списка могут быть очень большими. Для управления большими наборами результатов Amazon S3 использует разбиение на страницы, чтобы разделить их на несколько ответов. Всегда проверяйте метод ObjectListing.isTruncated (), чтобы увидеть, завершен ли возвращенный листинг или нужны дополнительные вызовы, чтобы получить больше результатов. В качестве альтернативы можно использовать метод AmazonS3Client.listNextBatchOfObjects (ObjectListing) в качестве простого способа получения следующей страницы списков объектов.

Общее количество ключей в корзине существенно не влияет на производительность списка.

Итак, вы можете сделать что-то вроде этого:

ObjectListing objectListing = s3client.listObjects("MyBucketName");
for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {
    // implement some search algorithm to find matching files using objectSummary.getKey()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...