如何从s3存储桶中获取最后的X个修改过的文件

时间:2017-09-14 08:05:46

标签: amazon-web-services amazon-s3

我的桶中有很多钥匙(拉链)。

我们想要从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;
    }

有什么想法吗?

2 个答案:

答案 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

希望以后对其他人有帮助!