首页 > 解决方案 > 如何使用 AWS CLI 或 Python 列出 AWS S3 存储桶中的*最近*文件

问题描述

我有一个摄像头,它每小时都会向我的 AWS S3 存储桶添加新文件,除非它没有。为了快速排除故障,我希望能够在 S3 文件夹中找到(列出或查看)最新文件。或列出自特定日期/时间以来的所有文件。FWIW,文件名由 UNIX 纪元日期戳组成,因此我可以查找包含大于 161315000 的数字的文件名。

到目前为止,我唯一的解决方案是列出所有文件,通过管道传输到文本文件,然后我可以对其进行解析。这需要很长时间......我有数以万计的文件。

我很乐意使用 AWS CLI、s3cmd、Boto... 任何可行的方法。

标签: pythonamazon-s3boto3aws-clis3cmd

解决方案


这是单独使用 S3 无法做到的,因为 S3 不是文件系统,而是对象存储。因此,它针对大量对象进行了优化,而不是针对快速列出。

如果您可以控制对象键的格式,则可以在它们前面加上当前日期(如2021/02/11/161315000)。如果您仅出于调试目的手动查找最新对象,则可以轻松找到最新对象。

如果无法更改对象键的格式,则必须求助于更复杂的选项。

虽然存在S3 清单报告,它确实提供了所有对象的列表及其最后修改时间,但这可能对您也不起作用,因为这些报告每天只生成一次,并且可能不包括最近添加的对象。

另一种可能更适合您的用例的替代方法是利用S3 事件通知来处理新创建的对象来触发 AWS Lambda 函数。然后,此 AWS Lambda 函数可以将最后修改的对象的 S3 密钥存储在某处(例如将其记录到 Amazon CloudWatch,您可以在其中简单地检查最近创建的 S3 对象的最新日志记录)。


推荐阅读