You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动删除AWS ECR仓库中显示为“-”的无标签镜像?

自动清理AWS ECR无标签镜像的实现方案

方法一:ECR原生生命周期规则(最简便推荐)

直接通过ECR控制台配置托管式规则,无需编写代码:

  • 打开AWS ECR控制台,进入目标仓库
  • 切换到生命周期规则标签页,点击创建规则
  • 配置规则细节:
    • 规则名称:自定义,比如clean-untagged-images
    • 筛选条件:选择标签状态为无标签
    • 保留策略:可设置保留时长(比如保留最近7天的无标签镜像,避免误删刚推送的镜像),或直接设置保留数量为0(彻底删除所有无标签镜像)
    • 确认后保存规则,ECR会自动按规则执行清理

方法二:AWS CLI脚本+定时任务(灵活自定义)

如果需要更个性化的清理逻辑,可编写CLI脚本,配合EventBridge定时执行:

  • 示例bash脚本:
#!/bin/bash

# 替换为你的仓库名和AWS区域
REPO_NAME="your-target-repo"
REGION="cn-north-1"

# 获取所有无标签镜像的摘要
UNTAGGED_DIGESTS=$(aws ecr list-images --repository-name $REPO_NAME --region $REGION --filter "tagStatus=UNTAGGED" --query 'imageIds[*].imageDigest' --output text)

# 批量删除无标签镜像
if [ -n "$UNTAGGED_DIGESTS" ]; then
  aws ecr batch-delete-image --repository-name $REPO_NAME --region $REGION --image-ids $(echo $UNTAGGED_DIGESTS | awk '{for(i=1;i<=NF;i++) print "imageDigest="$i}')
fi
  • 定时执行配置:
    1. 将脚本上传至S3存储桶,或集成到Systems Manager文档中
    2. 在AWS EventBridge创建定时规则(比如每天凌晨2点执行)
    3. 选择执行目标为Systems Manager Automation或ECS任务,触发脚本运行

方法三:AWS Lambda自动化(高度可扩展)

适合需要结合额外业务逻辑的场景(比如按镜像创建时间筛选),用Lambda编写代码配合EventBridge定时触发:

  • 示例Python代码:
import boto3

def lambda_handler(event, context):
    ecr_client = boto3.client('ecr', region_name='cn-north-1')
    repo_name = "your-target-repo"
    
    # 获取无标签镜像列表
    image_list = ecr_client.list_images(
        repositoryName=repo_name,
        filter={'tagStatus': 'UNTAGGED'}
    )
    
    image_ids = image_list.get('imageIds', [])
    if not image_ids:
        print("没有无标签镜像需要清理")
        return {'statusCode': 200, 'body': "无清理任务"}
    
    # 批量删除镜像
    delete_result = ecr_client.batch_delete_image(
        repositoryName=repo_name,
        imageIds=image_ids
    )
    
    deleted_count = len(delete_result.get('imageIdsDeleted', []))
    print(f"成功删除{deleted_count}个无标签镜像")
    return {'statusCode': 200, 'body': f"已删除{deleted_count}个无标签镜像"}
  • 配置步骤:
    1. 创建Lambda函数,为其添加包含ecr:ListImages和ecr:BatchDeleteImage权限的IAM角色
    2. 在EventBridge创建定时触发规则,绑定该Lambda函数
    3. 测试函数执行,确认清理效果

内容的提问来源于stack exchange,提问作者Zakaria Ait Yakoub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:20:10