我的桶中有很多钥匙(拉链)。
我们想要从s3请求最后创建的X键。
我们使用Java API。但是,我找不到如何获得最后修改/创建的方法。
我们自己对列表进行了排序,但仍然没有得到最后的X项。这有问题,因为这个桶可能很大,我们不想检索所有结果并对它们进行排序。
public List<MyObject> getResults(int numberOfResults) {
ObjectListing listing = s3Client.listObjects(new ListObjectsRequest()
.withBucketName(bucketName)
.withMaxKeys(numberOfResults));
List<S3ObjectSummary> list = listing.getObjectSummaries();
// our internal sorting logic:
List<MyObject> myObjects = list.stream().map(item ->
MyObject.builder().resultKey(item.getKey()).createdDate(item.getLastModified()).build()).sorted(Comparator.comparing(MyObject::getCreatedDate))
.collect(Collectors.toList());
return myObjects;
}
有什么想法吗?
答案 0 :(得分:0)
我认为Aws没有提供在服务器端执行此操作的方法。您可以使用客户端过滤。通过CLI,您可以像aws s3api list-objects --bucket bucketName --query "sort_by(keys,LastModified)"
答案 1 :(得分:0)
我也面临着同样的挑战,并且能够使用以下命令从S3 API获取信息:
aws s3api list-objects-v2 --max-items 3 --query "reverse(sort_by(Contents,&LastModified))" --bucket <bucketName>
您可以将--max-items
调整为所需的X
。
希望以后对其他人有帮助!