如何自动将AWS S3中超过10天的文件移动至其他文件夹?
AWS S3自动移动过期文件的实现方案
当然有可行的方案来实现你的需求,下面是两种最常用的方式:
1. S3生命周期规则 + Lambda 组合
S3原生的生命周期规则可以帮你筛选出符合时间条件的文件,但直接移动到同存储类的其他“文件夹”(前缀)需要配合Lambda完成复制逻辑:
- 先在S3桶里创建生命周期规则,筛选最后修改时间超过10天的对象(S3没有专门的“创建时间”字段,对象创建时的修改时间等于创建时间,完全可以替代)。
- 规则触发后调用Lambda函数,在函数里执行复制操作:把符合条件的对象复制到目标前缀(也就是你说的目标文件夹),原对象保留不删除。
2. 定时触发的自定义Lambda函数
这个方案灵活性更高,完全自定义逻辑:
- 用AWS SDK(比如Python的boto3)写Lambda函数,逻辑包括:
- 列出源桶里的所有对象,过滤出最后修改时间超过10天的。
- 对每个符合条件的对象,调用
copy_object接口复制到目标前缀。 - 可以给已处理的对象加个自定义标签,避免后续重复处理。
- 用EventBridge(原CloudWatch Events)设置定时触发,比如每天跑一次,自动完成扫描和移动。
关于SDK获取近10天文件的需求
你直接用AWS SDK调用list_objects_v2接口,配合时间过滤就能拿到近10天的文件,举个Python的简单例子:
import boto3 from datetime import datetime, timedelta s3_client = boto3.client('s3') bucket = 'your-bucket-name' cutoff_time = datetime.now() - timedelta(days=10) # 列出桶内对象,过滤近10天的 response = s3_client.list_objects_v2(Bucket=bucket) recent_files = [obj for obj in response.get('Contents', []) if obj['LastModified'] >= cutoff_time] # 处理这些文件 for file in recent_files: print(f"近10天文件:{file['Key']}")
注意:S3里的“文件夹”其实是对象键的前缀,所以“移动”本质是复制对象到带目标前缀的键路径,原对象会保留在原路径下。
内容的提问来源于stack exchange,提问作者Rawi Lahiany
相关产品推荐
相关产品推荐

