如何自动删除S3存储桶内指定扩展名且超过指定天数的对象
S3 按扩展名自动过期删除对象的实现方案
原生S3生命周期适配方案
原生S3生命周期规则默认不直接支持按文件扩展名筛选,可通过标签关联的方式实现需求:
- 对象上传阶段,在业务逻辑里根据文件后缀为对象添加自定义标签,例:
file_type=csv、file_type=temp - 配置生命周期规则时,筛选条件同时设置 作用前缀(留空则覆盖全桶)、对应扩展名的标签值、对象留存天数,S3会自动到期删除所有匹配的对象
存量对象可通过一次性批量扫描脚本补打对应标签,即可让生命周期规则覆盖存量+增量的所有目标对象。
自定义自动化方案(无需修改上传逻辑)
如果不想调整原有上传逻辑打标签,可以用定时触发的轻量计算服务实现:
- 配置每天触发一次的云函数(如AWS Lambda),给函数开通对应存储桶的列表、删除权限
- 函数内按固定逻辑执行:
- 调用
ListObjectsV2接口遍历目标前缀(或全桶)的对象 - 过滤出最后修改时间距今超过指定留存天数、且文件名后缀匹配目标扩展名的对象
- 调用
DeleteObjects接口批量删除所有匹配到的对象
- 调用
- 可以根据不同扩展名的需求,单独配置对应的留存天数、作用前缀,适配灵活度更高。
内容的提问来源于stack exchange,提问作者user2175783
相关产品推荐
相关产品推荐

