将文件从s3复制到本地?
Copy file from the s3 to the local?
我的 s3 存储桶中有很多文件,是否有任何 aws cli 命令可用于在 s3 中查找具有前缀名称的最新文件?以及如何将该文件从 s3 复制到我的本地文件夹?我可以使用 Boto3 或 python 库来执行此操作吗?
最近的文件可以参考这个答案。 。对于要在对象列表中的前缀,您可以使用
aws s3 ls $BUCKET --recursive | sort | grep <prefix>
谢谢
阿希什
此命令将列出给定前缀的 'latest' 对象:
aws s3api list-objects --bucket MY-BUCKET --prefix foo/ --query 'sort_by(Contents, &LastModified)[-1].Key' --output text
您可以将它与复制命令结合使用:
key=$(aws s3api list-objects --bucket MY-BUCKET --prefix foo/ --query 'sort_by(Contents, &LastModified)[-1].Key' --output text)
aws s3 cp s3://MY-BUCKET/$key .
--query
参数非常强大。参见:JMESPath Tutorial
Python 中的表演:
import boto3
s3_client = boto3.client('s3')
response = s3_client.list_objects_v2(Bucket='MY-BUCKET', Prefix='foo/')
objects = sorted(response['Contents'], key=lambda obj: obj['LastModified'])
## Latest object
latest_object = objects[-1]['Key']
filename = latest_object[latest_object.rfind('/')+1:] # Remove path
# Download it to current directory
s3_client.download_file('MY-BUCKET', latest_object, filename)
基本上,您会取回所有对象,然后按 LastModified
对它们进行排序。
请注意,list_objects_v2()
命令只能 returns 最多 1000 个对象。如果桶有更多,您将需要循环或使用分页器。参见:Paginators — Boto3 documentation
我的 s3 存储桶中有很多文件,是否有任何 aws cli 命令可用于在 s3 中查找具有前缀名称的最新文件?以及如何将该文件从 s3 复制到我的本地文件夹?我可以使用 Boto3 或 python 库来执行此操作吗?
最近的文件可以参考这个答案。
aws s3 ls $BUCKET --recursive | sort | grep <prefix>
谢谢
阿希什
此命令将列出给定前缀的 'latest' 对象:
aws s3api list-objects --bucket MY-BUCKET --prefix foo/ --query 'sort_by(Contents, &LastModified)[-1].Key' --output text
您可以将它与复制命令结合使用:
key=$(aws s3api list-objects --bucket MY-BUCKET --prefix foo/ --query 'sort_by(Contents, &LastModified)[-1].Key' --output text)
aws s3 cp s3://MY-BUCKET/$key .
--query
参数非常强大。参见:JMESPath Tutorial
Python 中的表演:
import boto3
s3_client = boto3.client('s3')
response = s3_client.list_objects_v2(Bucket='MY-BUCKET', Prefix='foo/')
objects = sorted(response['Contents'], key=lambda obj: obj['LastModified'])
## Latest object
latest_object = objects[-1]['Key']
filename = latest_object[latest_object.rfind('/')+1:] # Remove path
# Download it to current directory
s3_client.download_file('MY-BUCKET', latest_object, filename)
基本上,您会取回所有对象,然后按 LastModified
对它们进行排序。
请注意,list_objects_v2()
命令只能 returns 最多 1000 个对象。如果桶有更多,您将需要循环或使用分页器。参见:Paginators — Boto3 documentation