Мне удалось заставить его работать с фрагментом кода ниже.
Но я считаю этот способ довольно громоздким, и я все же хотел бы проверить в сообществе, является ли это правильным способом. Особенно я нахожу довольно громоздкой необходимость go из коллекции S3Object
в коллекцию ObjectIdentifier
и цепочки необходимых строителей. Почему построитель DeleteObjectsRequest
не позволяет просто указать набор строк, являющихся ключами удаляемых объектов?
public static void deleteS3Objects(String bucket, String prefix) {
ListObjectsV2Request request = ListObjectsV2Request.builder().bucket(bucket).prefix(prefix).build();
ListObjectsV2Iterable list = s3Client.listObjectsV2Paginator(request);
for (ListObjectsV2Response response : list) {
List<S3Object> objects = response.contents();
List<ObjectIdentifier> objectIdentifiers = objects.stream().map(o -> ObjectIdentifier.builder().key(o.key()).build()).collect(Collectors.toList());
DeleteObjectsRequest deleteObjectsRequest = DeleteObjectsRequest.builder().bucket(bucket).delete(Delete.builder().objects(objectIdentifiers).build()).build();
s3Client.deleteObjects(deleteObjectsRequest);
}
}