我的S3存储桶中有很多文件,我希望下载最近的1000个(按日期上传)。
如何使用AWS cli或s3 boto
继续这样做答案 0 :(得分:3)
您可以使用以下命令:
aws s3api list-objects --bucket <bucket> \
--query 'reverse(sort_by(Contents[].{Key: Key, LastModified: LastModified}, &LastModified))[:1000].[Key]' --output text | \
xargs -I {} aws s3 cp s3://<bucket>/{} .
我使用以下JMESPath函数:
答案 1 :(得分:1)
您可以使用以下代码从S3下载最新元素:
import boto
conn = boto.connect_s3()
bucket = conn.get_bucket('test-bucket')
bucket_files = bucket.list('subdir/file_2017_')
pointer = [(bucket_file.last_modified, bucket_file) for bucket_file in bucket_files]
key_to_download = sorted(pointer, cmp=lambda x,y: cmp(x[0], y[0]))[-1][1]
key_to_download.get_contents_to_filename('target_filename')