我们在S3文件夹中有1,000,000个文件。每小时都会有一些新文件添加到上面的文件夹中。
使用Java如何找到最近5分钟或最近1小时内添加的文件?
答案 0 :(得分:0)
最直接的方法是扫描存储桶并查找新的时间戳。这是昂贵,缓慢,而且确实是一个坏主意。
ObjectListing objList = s3.listObjects(bucketname)
for (S3ObjectSummary obj in objList.getObjectSummaries()) {
// compare obj.getLastModified(), a Date object
}
其次,您可以将上传内容设置为按字典顺序与日期保持一致,然后扫描部分密钥。在下列情况下,我会在给定的小时内扫描条目:
s3.listObjects(bucketname, "2015-02-01-15")
最后,最好的选择是使用相对较新的S3 Event Notifications将每个密钥添加到SQS队列。即使在伪代码中,我也不会详细说明这一点,但Eric Hammond has a good entry detailing how to do this。