2016-05-29 131 views
0

我想仅提取之前从S3存储桶中读取的文件。我也需要他们的文件名,以便我知道在每次迭代中处理哪些文件。获取S3存储桶中的最新文件

我决定我现在不想实现一个队列监听器,所以使用通知不是我想要的。

我考虑过使用downloadBucket API并打开“调试”,然后解析结果以找到下载的文件。

有谁知道更好的方法,或者如果打开调试会影响性能?

我正在使用laravel/php来执行此操作。

+1

我认为S3并不是一个简单的方法,因为S3只是裸存储。 – markvdlaan93

+0

*“我决定现在不想实现队列监听器”*考虑到这实际上是最佳解决方案......为什么不呢? –

+0

@ Michael-sqlbot a)我需要实现一个监听器 - 这是更多的代码,这意味着花费更多的时间。 b)如果我有两个系统需要对同一个目录执行此操作 - 这可能会带有两个队列,但这并不会随着我的努力而扩展 - 这很昂贵。 – NiRR

回答

0

S3在list_objects中没有过滤器功能。因此,你可以做的最好的事情是将处理后的文件移动到新的存储桶或前缀。所以你不必担心哪个键被“处理”。

因此你可以这样做(算法,而不是代码)

- store new_key to new/ folder 
    - select everything in new/ prefix 
    - process each key 
    - copy key to proceesed/ prefix 
    - delete key in new/ prefix 

注:每1000 PUT /复印/ POST/LIST将花费你0.005美分。所以谨慎使用它。