我们正在实施生命周期策略来清理旧的ECR映像,但如果Fargate ECS集群仍在引用任何映像,我们希望避免该映像过期。我们如何才能最好地做到这一点?
我正在考虑添加一个";活的";标签,由蓝绿开关设置和取消设置,但有一个问题-我们的AWS CodePipeline中的2个或多个环境可能使用相同的图像,所以我需要实现某种引用计数。
有没有更好的方法,或者我应该采用这种方法?
不幸的是,使用生命周期规则来管理图像对于AWS来说并不理想。
- 多平台映像(amd64+arm64(在注册表中通过具有顶级元映像进行管理,该映像根据平台指向其他映像(这有点简化(。当你标记你的图像时,它只标记顶级的元图像,而不是较低级别的元图像。因此,可能会意外地擦除图像
- 正如你所发现的,即使图像在某个地方被引用,它们也可以被擦除
我使用了一个简单的脚本,而不是使用生命周期规则,它反过来包含了我想要的任何逻辑。您可以运行一个过滤器来查看哪些ECS服务存在并且正在使用该映像,然后排除任何返回为空的服务。如果所有东西都在同一个帐户中,这会简单得多。
换句话说,与其让你的服务将标签推送到你的图像上,不如让你的删除脚本明确确认没有正在使用的图像被删除。那么你就不必担心有多少环境在运行它了