Python 仅从S3存储桶中获取最后100个左右的文件(最近的文件)
我正在构建一个进程,该进程将根据文件的最后接收日期向S3存储桶发送可定制的警报 因为我的桶很大,这样做需要很长的时间:Python 仅从S3存储桶中获取最后100个左右的文件(最近的文件),python,amazon-web-services,amazon-s3,boto3,Python,Amazon Web Services,Amazon S3,Boto3,我正在构建一个进程,该进程将根据文件的最后接收日期向S3存储桶发送可定制的警报 因为我的桶很大,这样做需要很长的时间: import boto3 s3 = boto3.resource('s3',aws_access_key_id='demo', aws_secret_access_key='demo') my_bucket = s3.Bucket('demo') bucket_items = my_bucket.objects.all(): 当然,我可以简单地执行上述操作,然后按last
import boto3
s3 = boto3.resource('s3',aws_access_key_id='demo', aws_secret_access_key='demo')
my_bucket = s3.Bucket('demo')
bucket_items = my_bucket.objects.all():
当然,我可以简单地执行上述操作,然后按last\u modified
属性进行排序,但我想知道在进行API调用时,是否有更优雅的方法来筛选100个最近的文件
理想情况下,我还希望能够通过搜索字符串进一步自定义此功能-例如,我可能需要文件名中包含“.docx”的100个最新文件,或者我可能需要大小超过1MB的最新文件-等等
只是想知道当不需要整个bucket的内容时,这种查询的最佳实践是什么。关于100个最新文件,您可以在bot3中使用list_对象。作为回报,有“LastModified”字段用于排序和获取所需的文件。 对于筛选,您可以使用此代码列出所有对象,并添加一些代码以供下载
srcbucket = 'bucket'
srckey = 'object'
obj = s3.Object(srcbucket, srckey)
关于100个最新的文件,您可以在boto3中使用list_对象。作为回报,有“LastModified”字段用于排序和获取所需的文件。 对于筛选,您可以使用此代码列出所有对象,并添加一些代码以供下载
srcbucket = 'bucket'
srckey = 'object'
obj = s3.Object(srcbucket, srckey)
您的可用选项包括:
- 从bucket中检索对象列表:但是如果您有大量对象(10000+),这会很慢,但是使用前缀可以使这一过程更快,或者
- 获取每日列表途径:但听起来您希望信息比每日更新,或者
- 维护您自己的对象数据库
- 创建一个Amazon S3事件,该事件在创建/更新/删除对象时触发AWS Lambda函数
- AWS Lambda函数应将此信息存储在数据库中(您需要编写此功能)
- 然后,您可以查询数据库中的所有需求
- 从bucket中检索对象列表:但是如果您有大量对象(10000+),这会很慢,但是使用前缀可以使这一过程更快,或者
- 获取每日列表途径:但听起来您希望信息比每日更新,或者
- 维护您自己的对象数据库
- 创建一个Amazon S3事件,该事件在创建/更新/删除对象时触发AWS Lambda函数
- AWS Lambda函数应将此信息存储在数据库中(您需要编写此功能)
- 然后,您可以查询数据库中的所有需求