You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 02:45:22