首页 > 解决方案 > 将文件从 s3 复制到本地?

问题描述

我的 s3 存储桶中有很多文件,那么是否有任何 aws cli 命令可用于在 s3 中查找具有前缀名称的最新文件?以及如何将该文件从 s3 复制到我的本地文件夹?我可以使用 Boto3 或 python 库来执行此操作吗?

标签: amazon-web-servicesamazon-s3aws-cliboto

解决方案


这是在 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()命令最多只返回 1000 个对象。如果存储桶有更多,则需要循环或使用分页器。请参阅:分页器 — Boto3 文档


推荐阅读