使用 Java 查找在过去 1 小时内添加到 S3 存储桶文件夹中的文件

Using Java find files added to S3 bucket folder in the last 1 hour

我们在 S3 文件夹中有 1,000,000 个文件。每小时都会向上述文件夹添加一些新文件。

如何使用 Java 查找在过去 5 分钟或过去 1 小时内添加的文件?

最直接的方法是扫描存储桶并查找新的时间戳。这很昂贵,很慢,而且真的是个坏主意。

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 to add each key to a SQS queue. I'm not going to detail this, even in pseudocode, but Eric Hammond has a good entry detailing how to do this