ECR 生命周期策略异常

Posted

技术标签:

【中文标题】ECR 生命周期策略异常【英文标题】:ECR lifecycle policy exception 【发布时间】:2018-12-24 19:08:50 【问题描述】:

在我们的 ECR 中,我们每天都会推送许多带有标签 16_XXXX 的图像。一些推送的图像不是应用程序的稳定版本。当有稳定版本时,我们将使用标签 16.XXXX 重新标记图像。

我们已经设置了一个生命周期策略来清理在 imageCountMoreThan (500) 处带有 16_XXXX 标签的图像。 既然有图片有两个标签(即稳定版)(如16_0715和16.0715),会不会也被清理掉?

我们不想删除所有稳定版本的图像。有没有办法在 ECR 生命周期策略中重新标记图像并删除旧标记?

谢谢!

【问题讨论】:

【参考方案1】:

如果你只有一个规则,它确实会删除你的稳定图像。

但是,您可以通过策略中的 2 条规则来完成此操作。优先级为 10 的规则将确保您的稳定映像 (16.XXXX) 安全,优先级为 20 的规则将“查看”带有您的不稳定版本 (16_XXXX) 的标签数量,但永远无法删除稳定映像,因为它处于更高的优先级。这是一个例子:


    "rules": [
        
            "rulePriority": 10,
            "description": "Keep Stable Images",
            "selection": 
                "tagStatus": "tagged",
                "tagPrefixList": ["16."],
                "countType": "imageCountMoreThan",
                "countNumber": 9999
            ,
            "action": 
                "type": "expire"
            
        ,
        
            "rulePriority": 20,
            "description": "Delete Old Unstable Images",
            "selection": 
                "tagStatus": "tagged",
                "tagPrefixList": ["16_"],
                "countType": "imageCountMoreThan",
                "countNumber": 500
            ,
            "action": 
                "type": "expire"
            
        
    ]

来源:我为 Lifecycle Policies 编写了规则评估逻辑 :) 您也可以查看文档,此页面底部描述了用户可以利用的系统的一些事实:https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html

An image that matches the tagging requirements of a rule cannot be expired by a rule with a lower priority.

【讨论】:

非常感谢!将在我们当前的设置中实现这一点并查看结果:) 我实际上阅读了链接页面底部的所有这些要点,但未能评估可用于该规则的策略。您的建议似乎满足该规则。谢谢! 这是一个很好的观点,我会看看我是否可以与我们的文档作者交谈并获得一些更有用的情况和示例:D 很高兴从该功能的作者那里得到答案:) @VolatileRig 只是好奇为什么规则不允许我们想要排除的标签前缀?例如,我们只想标记具有特定前缀(如 stable)的稳定图像,而将其余部分与其他通用标签(如 buildnumber 和 git hashes)一起标记,这些标签将与所有图像相关联。仅仅指定排除图像标记以使除具有稳定标记的图像之外的所有内容都过期不是很好吗? 我应该说我不再为 AWS 工作,但我可以简单谈谈为什么它会这样设计。我们从 S3 的生命周期策略评估中获得灵感,并且必须密切关注 API 设计,以使其保持简单易懂。使用一个用于删除除指定排除之外的所有内容的字段,我们冒着用户意外制定策略的风险,该策略将删除他们上传的每张新图像,除非它与排除模式匹配,我们认为从长远来看这会更具破坏性和混乱运行。

以上是关于ECR 生命周期策略异常的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CloudFormation 定义 ECR 生命周期策略

Pod生命周期和重启策略

ES实战索引生命周期管理

ES实战索引生命周期管理

ES索引生命周期管理

ES 索引生命周期管理策略