S3存储桶旧版本未按生命周期规则清理问题求助
S3存储桶生命周期规则未清理旧版本对象问题
背景与问题
我有一个用于存储备份的S3存储桶,每个备份包含30GB和1GB两个文件。我们通过脚本保留14天内的备份,超期则删除,从桶内可见对象来看脚本运行正常,仅留存了预期的14天内的对象。
该存储桶已启用Object Lock(对象锁)和Versioning(版本控制),设置了30天保留期。同时配置了生命周期规则作为故障安全机制,用于清理脚本遗漏的内容,规则如下:
- 应用范围:桶内所有对象
- 执行动作:永久删除非当前版本;删除过期的对象删除标记或未完成的分段上传
- 触发条件:对象变为非当前版本后的90天(未设置版本数量限制)
需说明:每个备份文件始终只有一个版本。
执行命令查看对象版本:
aws s3api list-object-versions --bucket <bucket name>
返回结果中发现存在已近12个月的非当前版本对象,明显超出90天的删除规则范围,示例片段如下:
"Versions": [ { "ETag": "\"XXXXX\"", "Size": 5183943176, "StorageClass": "STANDARD_IA", "Key": "backup/autobackup/2023-11-25_04-05-41/volumes.zip.gpg", "VersionId": "XXX.XXX", "IsLatest": false, "LastModified": "2023-11-24T17:06:09+00:00", "Owner": { "DisplayName": "support", "ID": "XXXXXX" } } ]
请问哪里操作有误?
补充信息
编辑补充1
该示例对象的保留期信息如下:
{ "Retention": { "Mode": "COMPLIANCE", "RetainUntilDate": "2023-12-24T17:06:08.312000+00:00" } }
注:已更新示例对象,因为该对象可通过CLI删除,保留截止日期对应更新后的示例对象。
编辑补充2
已手动删除所有超过30天的对象,因此排除对象锁问题,问题应出在生命周期规则上。
内容的提问来源于stack exchange,提问作者Brett Sutton
相关产品推荐
相关产品推荐

