You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为AWS S3配置生命周期规则删除未完成分段上传文件

解决方案:用S3生命周期规则自动清理未完成的上传文件

这个问题我在帮客户做类Dropbox的文件存储应用时碰到过好多次——未完成的上传残留不仅占用S3存储空间,还会产生不必要的费用,用S3的生命周期规则就能完美解决,分两种核心场景配置即可:

1. 清理未完成的分段上传(最关键)

大部分大文件上传都会用S3的分段上传功能,中途取消或网络故障后,已上传的分段会被S3保留(这些分段不会出现在常规的对象列表里,但确实占空间)。针对这种情况,专门配置规则终止并删除这些未完成的分段上传:

控制台操作步骤

  • 登录AWS控制台,打开S3服务,找到你的目标存储桶
  • 切换到管理标签页,点击生命周期规则创建规则
  • 给规则起个好记的名字,比如Cleanup-Incomplete-Multipart-Uploads
  • 应用范围:如果你的所有上传都需要处理,选整个存储桶;如果分段上传都存在特定前缀下(比如uploads/),可以指定前缀缩小范围
  • 往下拉到终止区域,找到未完成的分段上传选项
  • 设置在创建后的天数,比如1天(根据你的业务需求调整,S3支持1天及以上的设置,一般1天足够及时清理)
  • 确认配置后点击保存,规则会在几小时内生效(最长不超过24小时)

AWS CLI配置(适合自动化场景)

如果你习惯用命令行或者需要自动化部署,可以用这条命令:

aws s3api put-bucket-lifecycle-configuration --bucket your-bucket-name --lifecycle-configuration '{
  "Rules": [
    {
      "ID": "Cleanup-Incomplete-Multipart-Uploads",
      "Filter": {
        "Prefix": ""
      },
      "Status": "Enabled",
      "AbortIncompleteMultipartUpload": {
        "DaysAfterInitiation": 1
      }
    }
  ]
}'

2. 清理临时/不完整的文件对象(如果你的应用有这类场景)

如果你的应用在上传流程中会生成临时文件(比如先上传到tmp/前缀下,或者文件名带.tmp后缀,完成后再重命名到正式路径),那可以额外配置规则清理这些残留的临时文件:

控制台操作步骤

  • 同样在生命周期规则页面创建新规则,命名比如Cleanup-Temp-Incomplete-Files
  • 应用范围:指定临时文件的前缀(比如tmp/)或者后缀(可以用前缀过滤结合对象命名规则),如果你的应用给临时文件打了标签,也可以用标签过滤
  • 生命周期规则操作里选择过期,设置在创建后的天数(比如1天)
  • 保存规则即可

AWS CLI配置示例

aws s3api put-bucket-lifecycle-configuration --bucket your-bucket-name --lifecycle-configuration '{
  "Rules": [
    {
      "ID": "Cleanup-Temp-Incomplete-Files",
      "Filter": {
        "Prefix": "tmp/"
      },
      "Status": "Enabled",
      "Expiration": {
        "Days": 1
      }
    }
  ]
}'

几个重要注意点

  • 规则生效时效:S3的生命周期规则不是实时触发的,一般会在24小时内执行清理,但大部分场景下几小时内就会完成
  • 分段上传的时间计算DaysAfterInitiation是从分段上传开始的时间算起,而不是最后一个分段的上传时间,所以设置1天的话,所有超过1天未完成的分段上传都会被终止
  • 版本化桶的特殊处理:如果你的存储桶开启了版本化,记得在规则里配置非当前版本过期,避免旧版本的临时文件占用空间
  • 成本优化:及时清理这些残留能有效降低S3的存储费用,尤其是大文件上传频繁的场景

内容的提问来源于stack exchange,提问作者Shahid Rasool

火山引擎 最新活动