2015-11-05 157 views
0

我可以访问S3存储桶。我不拥有这个桶。我需要检查是否有新文件添加到存储桶中,以便对其进行监视。如何使用boto使用python监控AWS S3存储桶?

我看到桶可以触发事件,并且可以利用Amazon的Lambda来监视和响应这些事件。但是,我无法修改存储桶的设置以允许此设置。

我的第一个想法是筛选所有文件并获得最新的文件。但是,该存储桶中有很多文件,这种方法证明效率很低。

具体问题:

  1. 有没有一种方法能够有效地获得在桶中最新的文件?
  2. 有没有一种方法可以监视使用boto上传到存储桶?

以下具体问题:

  • 你会如何解决这个问题?假设你必须把最新的文件放在一个桶里并打印出它的名字,你会怎么做?

谢谢!

回答

0

对不起,您可以在将对象添加到Amazon S3存储桶或从中删除对象时触发AWS Lambda。也可以发送邮件至Amazon SNSAmazon SQS。这些设置需要由具有桶权限的人员配置。

如果您没有这种权限,但您有权调用GetBucket(),则可以检索存储桶中的对象列表。每个API调用最多返回1000个对象。

还有没有API调用可用于“获取最新文件”。

没有“监控”上传到存储桶的原始代码。您需要编写列出存储桶内容的代码,然后标识新的对象。

我该如何解决这个问题?我会要求存储桶的所有者添加一些功能来触发Lambda/SNS/SQS,或者提供文件提要。如果这是不可能的,我会编写自己的代码来扫描整个存储桶,并按定期计划执行。

+0

你好。感谢你的回答!我做了类似于你的建议/我最初的想法。在while循环中,我得到项目列表,按日期排序并提取第一个项目。我也保留最后一个新文件。如果当前最新的文件与最新的最新文件不同,这是一个新文件,所以我会做这件事。尽管如此,我认为这种方法根本不算优雅,但需要近半分钟的时间才能订购桶中的所有物品。迭代一次找到最新的也没有太大的改进。 – RandomGuyqwert

+0

是的,有更好的方法(Lambda,SQS,SNS,或者甚至将信息存储在DynamoDB表中),但它们都需要对存储桶本身进行权限。只有读权限,只有有限的选项。 –

相关问题