首页/数据/备份与容灾速查/S3 生命周期规则
数据库与云备份56 条

S3 生命周期规则

按前缀或标签编排存储层级与过期:转低频或归档层、到期删除、清理非当前版本与未完成的分段上传,是备份成本控制的核心工具。

备份与容灾速查数据更新于 2026-10-13

生命周期规则是什么

S3 生命周期规则是按前缀或标签给对象编排一段自动旅程:先转低频层、再转归档层、到期删除,同时清理历史版本与未完成的分段上传。它由存储服务端按天执行,不需要任何客户端脚本,是备份存储成本控制里最直接有效的一件工具。规则只对未来生效,已经处于归档层或过期的对象不会被追溯改写。

基本信息

适用平台AWS S3 及兼容实现;阿里云 OSS、华为 OBS 有同类功能但字段不同
权限要求s3:PutLifecycleConfiguration
作用粒度桶级规则 + 前缀或标签过滤,单桶规则数量有配额上限
执行时机异步按天处理,转换与删除不保证在配置当天完成

典型使用场景

  • 备份成本分层:30 天后转低频层,90 天后转归档层,按恢复需求分档存放
  • 合规过期:按法规要求在下线日之后自动删除,避免人工遗漏
  • 清理历史版本:桶开启版本控制后,用 NoncurrentVersionExpiration 回收被覆盖的老版本
  • 清理碎片:设置 AbortIncompleteMultipartUpload,回收中断上传留下的不可见存储费用
  • 临时数据自清理:日志或中间产物按天数自动过期,省掉定时清理脚本

规则与应用

规则与应用
# lifecycle.json 片段:按前缀分层并清理
# "Filter": {"Prefix": "daily/"}
# "Transitions": 30 天转 STANDARD_IA、90 天转 GLACIER
# "Expiration": {"Days": 3650} 到期删除
# "NoncurrentVersionExpiration": {"NoncurrentDays": 90}
# "AbortIncompleteMultipartUpload": {"DaysAfterInitiation": 7}
aws s3api put-bucket-lifecycle-configuration --bucket my-backup-bucket \
  --lifecycle-configuration file://lifecycle.json
aws s3api get-bucket-lifecycle-configuration --bucket my-backup-bucket   # 核对是否生效

动作读法

动作含义注意点
Transition转到更冷存储层转层后读取方式改变,归档层需先取回
Expiration到期删除对象当前版本被删,版本控制桶会产生删除标记
NoncurrentVersionExpiration删除历史版本不配置则历史版本持续计费
AbortIncompleteMultipartUpload清理未完成分片不清理的费用在账单里几乎看不出来
转入归档层的对象不能直接下载,需先发起 restore 生成临时副本(有取回时间与额外费用)。规则改动后建议用 get-bucket-lifecycle-configuration 回读确认,再观察对象在控制台的存储类变化。
分层与删除是自动执行且不可撤销的动作:配置前缀时多一个斜杠或少了目录层级,可能让仍需保留的备份提前转层甚至被删除,上线前先在测试桶验证规则命中范围。

易错点

  • 把可能在应急恢复中用到的备份过早转归档层:真出事时被取回时间拖住,RTO 无法达成
  • 不清理未完成的分段上传:存储费用持续累积且在对象列表里完全不可见
  • 版本控制桶只删当前版本:历史版本仍在计费,账单降不下来
  • 规则前缀写错导致命中范围扩大或完全不命中:转层与过期都不会报错,只能靠回读配置与账单核对

数据来源与参考

  • AWS 文档(Managing the lifecycle of objects)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌