Получение списка объектов с помощью AWS S3 SDK для Java 2.x

У меня есть корзина (logs) в Amazon S3 (us-east-1) с, что неудивительно, журналами, разделенными по приложениям и датам:

logs
├── peacekeepers
│   └── year=2018
│       ├── month=11
│       │   ├── day=01
│       │   ├── day=…
│       │   └── day=30
│       └── month=12
│           ├── day=01
│           ├── day=…
│           └── day=19
│               ├── 00:00 — 01:00.log
│               ├── …
│               └── 23:00 — 00:00.log
├── rep-hunters
├── retro-fans
└── rubber-duckies

Я хочу перечислить все объекты (журналы) за определенную дату, месяц, год...

Как это сделать с помощью AWS SDK для Java 2.x?


person madhead    schedule 19.12.2018    source источник


Ответы (1)


Новый SDK упрощает работу с разбитыми на страницы результатами:

S3Client client = S3Client.builder().region(Region.US_EAST_1).build();
ListObjectsV2Request request =
        ListObjectsV2Request
                .builder()
                .bucket("logs")
                .prefix("peacekeepers/year=2018/month=12")
                // .prefix("peacekeepers/year=2018/month=12/day=19")
                .build();
ListObjectsV2Iterable response = client.listObjectsV2Paginator(request);

for (ListObjectsV2Response page : response) {
    for (S3Object object : page.contents()) {
        // Consume the object
        System.out.println(object.key());
    }
}
person madhead    schedule 19.12.2018