【发布时间】:2025-12-16 18:45:01
【问题描述】:
在我们的 ECR 中,每个微服务都有多个存储库。
服务 1
服务 2
服务 3
在构建代码(适用于任何服务)、从中创建图像并推送到 ECR 时,我们使用关键字 - dev 和 build-XXX-XXX-XXX- 对其进行标记XXX。
如果我们再次执行此过程,新图像将被标记为如上,但上面的图像(现在是以前的)将仅标记为 build-XXX-XXX-XXX-XXX .
如何设置生命周期策略以仅删除那些仅标记为 build-XXX-XXX-XXX-XXX
的图像我设置了以下策略,但在测试运行期间,我可以看到它还会拾取那些标记为 dev 我不想删除的图像。
dev 标记的图像将始终与 build-XXX-XXX-XXX-XXX
一起出现{
"rules": [
{
"action": {
"type": "expire"
},
"selection": {
"countType": "imageCountMoreThan",
"countNumber": 5,
"tagStatus": "tagged",
"tagPrefixList": [
"build"
]
},
"description": "remove images starting with build",
"rulePriority": 1
}
]
}
在同一个 repo 中,我还推送带有各自标签(test 和 uat)的测试和 UAT 图像,使用上述过程(使用 build- XXX-XXX-XXX-XXX),也不想删除它们。
【问题讨论】:
-
dev标签不能同时存在于两个图像上。我不确定你在这里问什么。 -
明显的解决方案是更改您的标记约定,并用其他不包含“build”的单词标记“dev”构建
-
嗨 Jordanm,是的,当然 dev 标签不能存在于两个图像上。如果我第一次构建图像 - 它将带有两个标签 - dev 和 build-XXX-XX 并且如果我再次构建第二个图像 - 现在这将被标记为 dev 和 build-YY-YYY 并且之前的图像只保留构建-XXX-XXX。希望澄清。
标签: amazon-web-services amazon-ecs docker-image amazon-ecr