Delete old images inside ECR repository using python and boto3
Table of Contents generated with DocToc
- python3
- pip3
Credentials will be taken from your AWS_PROFILE in your terminal when you execute this python script.
$ aws configure
$ export AWS_PROFILE="myprofile" # will be set in the terminal where you'll execute the python script
This tool is available in pypip package, so you can install it using your command line:
$ pip3 install ecr-lifecycle
$ ecr-lifecycle -a 90 -r eu-west-1 -n repository/test/repo_name -l INFO
$ ecr-lifecycle -a 90 -r eu-west-1 -n repository/test/repo_name -l INFO -d
- -a: max age of the image(default: 30 days)
- -r: aws region
- -n: ECR repository name
- -l: level info (default: INFO)
- -d: (delete) execute the operation and delete images. Is destructive! Execute the cli first without '-d' in dry_run mode
You can store about 10mil images in a single ECR repository. Imagine, you have 2000mil images older than 90 days and you want to delete it. When you execute the program, the client of boto3 only returns a max of 1000 values, so you need to launch the program two times.
client = boto3.client('ecr', region_name=args.aws_region)
images = client.describe_images(
repositoryName=args.repository_name,
maxResults=1000, # here, limit of max results 1000
)