在我们的ECR中,我们每天都会推送带有标签16_XXXX的许多图像。某些推送的图像不是该应用程序的稳定版本。如果有稳定版本,我们将使用标签16.XXXX重新标记图像。
我们已经建立了生命周期策略,以使用imageCountMoreThan(500)清除带有16_XXXX标签的图像。 由于存在带有两个标签(即稳定版)的图像(例如16_0715和16.0715),它们也会被清理吗?
我们不想删除图像的所有稳定版本。是否有方法可以重新标记图像并删除旧标记,只是在ECR生命周期策略中除外?
谢谢!
答案 0 :(得分:3)
如果只有一条规则,则确实会删除您的稳定图像。
但是,您可以在策略中使用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"
}
}
]
}
来源:我为生命周期策略编写了规则评估逻辑:)您也可以检查文档,在此页底部描述了一些有关用户可以利用的系统事实: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.