非镜像制品被Amazon ECR「清理孤立制品」规则删除的疑问及解决咨询
Amazon ECR "Clean orphan artifacts" 内置规则问题解析
该规则是ECR内置规则吗?
是的,这是ECR针对OCI非镜像制品的内置生命周期规则,属于ECR对OCI生态的默认管理逻辑。当仓库启用OCI制品支持后,该规则会自动生效,优先级默认设为1,主要用于清理无合法引用的孤立制品,官方文档中未单独突出说明,但属于ECR后台默认运行的清理机制。
为什么我的制品被判定为孤立?
ECR定义“孤立制品”为未被任何镜像清单(manifest)或其他OCI对象引用的独立制品,常见场景包括:
- 推送的是单独的OCI元数据(如SBOM、配置文件),未通过OCI Referrers机制关联到任何镜像;
- 关联该制品的镜像清单已被删除,导致制品失去引用链路;
- 上传制品时未建立引用关系,仅作为独立对象存入ECR仓库。
规则中的countType: "Cleanup orphan artifacts"和countNumber: 1表示:制品被标记为孤立后,会在1天后触发删除(具体时长以ECR内部逻辑为准)。
如何避免制品被删除?
可以通过以下方法阻止内置规则清理你的非镜像制品:
- 关联制品到镜像清单:使用OCI Referrers功能,将元数据制品绑定到对应的镜像manifest。比如用
skopeo工具推送带引用的制品,或通过AWS CLI的aws ecr put-image命令配置referrers,让ECR识别到制品存在合法引用,不再标记为孤立。 - 创建高优先级保留规则:ECR规则优先级数值越小,优先级越高,因此你可以创建优先级为0的自定义规则,筛选需要保留的制品(比如按标签前缀、artifact类型匹配),设置更长的过期时间或保留数量,覆盖内置规则的清理逻辑。示例规则:
{ "rulePriority": 0, "description": "Retain metadata artifacts", "lifecycleEventSelection": { "tagStatus": "Any", "tagPatternList": ["metadata-*"], "countType": "imageCountMoreThan", "countNumber": 100 }, "action": "expire" } - 维护引用关系:避免删除与非镜像制品关联的镜像清单;若需删除镜像,先将关联的元数据制品重新绑定到其他镜像,或通过自定义规则设置单独保留。
内容的提问来源于stack exchange,提问作者Rasmus Faber
相关产品推荐
相关产品推荐

