Python:获取AmazonS3存储桶中的前100个最新密钥
我尝试使用boto,但它有Python:获取AmazonS3存储桶中的前100个最新密钥,python,django,amazon-web-services,amazon-s3,boto,Python,Django,Amazon Web Services,Amazon S3,Boto,我尝试使用boto,但它有.list()方法,该方法对我的数据集很长,还有.get\u all\u keys(),该方法随机获取数据集。我想在S3存储桶中获取大约100-1000个最新的密钥,其中包含数百万个密钥。最有效的方法是什么 import boto3 client = boto3.client('s3') start_after = “” response = client.list_objects(Bucket='<bucket>', StartAfter =sta
.list()
方法,该方法对我的数据集很长,还有.get\u all\u keys()
,该方法随机获取数据集。我想在S3存储桶中获取大约100-1000个最新的密钥,其中包含数百万个密钥。最有效的方法是什么
import boto3
client = boto3.client('s3')
start_after = “”
response = client.list_objects(Bucket='<bucket>', StartAfter =start_after,MaxKeys=1000)
从这1000条记录中获取最后一个键,并将其分配给start\u after变量,并在这次发出另一个请求
新请求将开始提取startAfter提供的密钥之后的密钥
如果您不介意数据稍微过时,您可以使用,它可以提供一个每日CSV文件,列出Amazon S3 bucket中的所有对象: Amazon S3 inventory提供逗号分隔值(CSV)或Apache优化行-列(ORC)输出文件,每天或每周为S3 bucket或共享前缀(即名称以公共字符串开头的对象)列出对象及其相应元数据
您可以分析此文件以获取密钥和上次修改的日期,然后按日期排序。根据上次修改进行排序。@kartheek问题是,在根据上次修改进行排序之前,我无法加载所有密钥–甚至加载所有密钥都要花很长时间。也许你可以给我看一些你的确切意思的代码——也许我理解错了。如果有数百万个键,那么使用S3API就不能有效地做到这一点。您必须使用前一天的S3清单,或者维护您自己的密钥数据库,按照您想要的方式进行排序。@jarmood好的,我明白了。有没有一种方法可以让我加载更多。比如使用fetch_more函数或类似的功能?@jarmood甚至可以获得上一次在8月份修改的1000个(随机)键。好的,我明白你的意思。但是生成
objs
是我遇到一些问题的部分。
'Contents': [
{
'Key': 'string',
'LastModified': datetime(2015, 1, 1),
'ETag': 'string',
'Size': 123,
'StorageClass': 'STANDARD'|'REDUCED_REDUNDANCY'|'GLACIER'|'STANDARD_IA'|'ONEZONE_IA',
'Owner': {
'DisplayName': 'string',
'ID': 'string'
}
},
],