Amazon Elastic Container Registry (Amazon ECR) 是 AWS 托管容器镜像注册表服务,它安全、可扩展且可靠。Amazon ECR 支持私有存储库,其具有使用 AWS IAM 的基于资源的权限。这样,指定用户或 Amazon EC2 实例可以访问您的容器存储库和镜像。您可以使用首选 CLI 推送、提取和管理 Docker 映像、Open Container Itistry (OCI) 映像和 OCI 兼容构件。
摘抄自aws官方文档,简述就是一个镜像仓库,云上的产品一般会提供一些额外的功能,加在一起就是ECR。
问题Gitlab CI/CD 的job不断的向ECR推送镜像文件,导致容量不断增大,而且很多镜像文件都是几年前的。ECR是基于存储的镜像文件大小、推送和拉去镜像进行收费的。为此需要清理一些长时间不用的镜像文件,ECR也为我们提供了这样的功能。
解决方法- 通过aws cli 可以获取我们的所有镜像文件的详细信息:
如果aws配已经置了region信息,就可以不用加region参数;
aws ecr describe-images --region xxx --repository-name xxx
可以看到镜像的推送时间,镜像的tag,镜像的仓库名称等:
2.编写我们的过期策略文件
下面这是我编写的策略文件policy.json,所有镜像文件从推送时间算起,只要是超过了180天,就进行过期清除操作。
{
"rules": [
{
"rulePriority": 1,
"description": "Expire images older than 180 days",
"selection": {
"tagStatus": "any",
"countType": "sinceImagePushed",
"countUnit": "days",
"countNumber": 180
},
"action": {
"type": "expire"
}
}
]
}
注意:这个不是立即生效的,在24小时内将进行完清除工作。
3. 通过cli进行配置过期策略:
aws ecr put-lifecycle-policy --region us-east-2
--repository-name xxx
--lifecycle-policy-text file://policy.json
参考文档:
创建生命周期策略 - Amazon ECR生命周期策略允许您创建一组规则,这些规则会让未使用的存储库镜像过期。以下程序显示如何创建生命周期策略。创建生命周期策略后,受影响的镜像会在 24 小时内过期。https://docs.aws.amazon.com/zh_cn/AmazonECR/latest/userguide/lp_creation.html



