我有一个问题,我需要从AWS S3存储桶中随机采样。我正在使用python boto3
库查询S3。
问题在于存储桶包含大约4亿个密钥。因此,创建键列表为:
kwargs = {'Bucket': bucket}
count = 0
while (True):
resp = s3.list_objects_v2(**kwargs)
for obj in resp['Contents']:
keys.append(obj['Key'])
try:
kwargs['ContinuationToken'] = resp['NextContinuationToken']
except KeyError:
break
将花费大量时间。
另一种选择是,如果可以的话,已经在AWS端对密钥进行了随机抽样。我不确定这是否可能或更快速?
从AWS存储桶中随机采样一些密钥的快速方法是什么?当然,很高兴使用boto3
我认为按日期过滤将是我可以轻松管理的事情,所以我做了类似的事情:
export LASTWEEK=`date -v-1d +%F`
aws s3api list-objects-v2 --bucket alcheratech-old-analysed-data --query 'Contents[?LastModified > `$YESTERDAY`]'
这似乎也运行了一段时间。不知道这是否列出所有内容,然后进行过滤...