You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置AWS ECR生命周期规则满足日期与数量双条件的镜像过期策略

你的理解完全正确。当前AWS ECR的原生生命周期策略确实存在两个明确限制:

  1. 单条规则无法同时指定sinceImagePushed和imageCountMoreThan两个筛选条件,无法直接实现两个条件的与逻辑匹配
  2. 每个镜像只会被优先级最高的第一条匹配到的规则触发过期,不会叠加多条规则的判断结果,因此也无法通过多条原生规则组合实现你需要的过期逻辑。

实现方案

方案一:自定义Lambda实现(100%匹配需求)

这是唯一可以完全满足要求的方案,实现步骤如下:

  • 编写Lambda函数,每次执行时拉取目标ECR仓库的所有镜像元数据,按推送时间倒序排序
  • 遍历镜像列表,仅对同时满足以下两个条件的镜像执行删除操作:
    • 镜像推送时间距当前时间超过90天
    • 该镜像在排序后的列表中排在第10位之后(不属于最新的10个镜像)
  • 配置EventBridge定时规则触发Lambda,推荐每天执行一次即可
  • 为Lambda执行角色配置ECR镜像读取、删除的对应权限即可。

方案二:原生策略近似实现(仅适用于镜像推送频率稳定的场景)

如果你的业务镜像推送频率较高,正常情况下90天内推送的镜像数量一定大于10个,可以用以下两条原生规则做过渡,优先级数值越低规则优先级越高:

  • 规则1(优先级 1):
    • 匹配条件:countType = sinceImagePushed,countNumber = 90,countUnit = days
    • 动作:expire
    • 作用:所有推送超过90天的镜像都会被本条规则匹配过期
  • 规则2(优先级 2):
    • 匹配条件:countType = imageCountMoreThan,countNumber = 10
    • 动作:expire
    • 作用:如果出现镜像推送频率降低,90天内的镜像不足10个的情况,本条规则会确保仅保留最新的10个镜像,避免无限制保留老旧镜像

注意:该方案存在限制,如果90天内推送的镜像数量超过10个,会删除排在第10位之后、但推送未满90天的镜像,不符合你的原始需求,仅适合临时使用。

内容的提问来源于stack exchange,提问作者John Velonis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:54:03