python - 如何使用 AWS CLI 或 Python 列出 AWS S3 存储桶中的*最近*文件
问题描述
我有一个摄像头,它每小时都会向我的 AWS S3 存储桶添加新文件,除非它没有。为了快速排除故障,我希望能够在 S3 文件夹中找到(列出或查看)最新文件。或列出自特定日期/时间以来的所有文件。FWIW,文件名由 UNIX 纪元日期戳组成,因此我可以查找包含大于 161315000 的数字的文件名。
到目前为止,我唯一的解决方案是列出所有文件,通过管道传输到文本文件,然后我可以对其进行解析。这需要很长时间......我有数以万计的文件。
我很乐意使用 AWS CLI、s3cmd、Boto... 任何可行的方法。
解决方案
这是单独使用 S3 无法做到的,因为 S3 不是文件系统,而是对象存储。因此,它针对大量对象进行了优化,而不是针对快速列出。
如果您可以控制对象键的格式,则可以在它们前面加上当前日期(如2021/02/11/161315000
)。如果您仅出于调试目的手动查找最新对象,则可以轻松找到最新对象。
如果无法更改对象键的格式,则必须求助于更复杂的选项。
虽然存在S3 清单报告,它确实提供了所有对象的列表及其最后修改时间,但这可能对您也不起作用,因为这些报告每天只生成一次,并且可能不包括最近添加的对象。
另一种可能更适合您的用例的替代方法是利用S3 事件通知来处理新创建的对象来触发 AWS Lambda 函数。然后,此 AWS Lambda 函数可以将最后修改的对象的 S3 密钥存储在某处(例如将其记录到 Amazon CloudWatch,您可以在其中简单地检查最近创建的 S3 对象的最新日志记录)。
推荐阅读
- python - Pip 错误:ModuleNotFoundError:没有名为“pip”的模块
- javascript - 在 React 高阶组件中传播 props
- bevy - 有没有办法访问 Bevy 中的相机缓冲区?
- reactjs - 如何使用 react-native-gl-image-filters 库包含/调整裁剪的相机图像?
- python - 视图 mysiteapp.views.addpost 没有返回 HttpResponse 对象。它返回 None 而不是
- android - 使用 allinone sdk 进行支付交易时发生 Paytm “networkError”
- powershell - 在 Powershell 中更改导出的 CSV 文件中的条目和列
- python - 清除字段后,文本输入字段会导致 chrome selenium 崩溃
- python - 在 self.__init__() 方法中使用 getpass() 失败,但在功能上使用时工作正常。为什么是这样?
- python - 关于 python 中文件可访问性的建议