生命周期规则是什么
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 回读确认,再观察对象在控制台的存储类变化。
分层与删除是自动执行且不可撤销的动作:配置前缀时多一个斜杠或少了目录层级,可能让仍需保留的备份提前转层甚至被删除,上线前先在测试桶验证规则命中范围。