To reduce Amazon ECR cost, expire old images with lifecycle policies, shrink image size, and keep pulls in-region. ECR private storage is $0.10 per GB-month, cross-region transfer out is $0.09 per GB, and in-region pulls to AWS services are free. Apply lifecycle policies that delete untagged and old tagged images, use minimal base images and multi-stage builds, run workloads in the same region as the registry, use VPC endpoints, and replicate only to regions you actually deploy in. Clearing this registry waste is part of the 31% average bill reduction across the 500+ environments we have optimized.
Last updated: June 2026 · Written by Fredrik Filipsson and reviewed by Morten Andersen · See, Cut, Lock, Run method
Amazon Elastic Container Registry (ECR) stores the container images that your ECS, EKS, and Fargate workloads run. Because every CI build pushes a new image and old ones are rarely cleaned up, registries accumulate dozens of stale versions per repository, each billing $0.10 per GB-month. Add cross-region replication to places you do not deploy and cross-region pulls on every scale-up, and a service most teams think of as free starts to show on the bill. This guide is part of our complete guide to AWS cost optimization, the cluster pillar it links up to.
How much does Amazon ECR cost?
Amazon ECR private repositories cost $0.10 per GB-month for stored images, with free data transfer in and free transfer to AWS services in the same region. Per the Amazon ECR pricing page, you pay only for the gigabytes of images you store and for data transfer out: transfer in is free, pulling to EC2, ECS, EKS, Lambda, App Runner, or Fargate in the same region is free, and cross-region transfer out is $0.09 per GB. For ECR public repositories, data transfer out to non-AWS destinations is free up to 5 TB per month when authenticated with an AWS account, then billed. Because in-region pulls are free, the cost on most estates is dominated by stored gigabytes and by any cross-region movement, both of which are controllable. Verify current rates before modeling, since pricing changes by region.
How do I reduce ECR cost step by step?
Reduce ECR cost by deleting old images, shrinking the ones you keep, and avoiding cross-region transfer. Work through these steps:
- Measure stored image GB per repository. Use AWS Cost Explorer to see which repositories hold the most gigabytes, since ECR bills $0.10 per GB-month for stored images.
- Apply lifecycle policies to expire old images. Set ECR lifecycle policies to delete untagged images and keep only the last few tagged builds, so you stop storing images nothing deploys.
- Shrink image size with smaller base images. Use minimal base images and multi-stage builds so each stored image and each pull moves fewer bytes, cutting both storage and any transfer cost.
- Keep pulls in-region and use VPC endpoints. Run workloads in the same region as the registry and use VPC endpoints for ECR so pulls stay free and avoid NAT gateway and cross-region data transfer charges.
- Replicate only where you deploy. Limit cross-region replication to regions you actually run in, since each copy adds $0.09 per GB transfer plus duplicate $0.10 per GB-month storage in the second region.
This is the same waste-elimination work in our AWS cost optimization service. The file-storage counterpart, where EFS and FSx accumulate cold data, is covered in the sibling guide how to cut Amazon EFS and FSx storage costs.
A registry with no lifecycle policy keeps every image ever pushed. CI pipelines push on every commit, so a single repository can hold hundreds of versions and gigabytes of untagged layers, all billing $0.10 per GB-month. One policy that expires untagged images and keeps the last handful of tagged builds is the fastest ECR saving, and it runs automatically from then on.
Does ECR charge for pulling images?
ECR does not charge data transfer for pulling images to AWS services in the same region as the repository, but cross-region and internet pulls do incur charges. This is the single most misunderstood part of ECR cost. When your EKS nodes, ECS tasks, or Lambda functions pull from a registry in their own region, the transfer is free, so high pull volume in-region is not a cost problem. The charges appear when images cross a boundary: a cross-region pull at $0.09 per GB, a pull that routes through a NAT gateway instead of a VPC endpoint, or replication to a region you do not deploy in. Auto-scaling makes this worse, because every new node pulls the image again, so a cluster that scales up frequently while pulling cross-region multiplies the transfer line. Keeping compute and registry co-located and adding a VPC endpoint removes nearly all of it.
How many stale images is your registry storing?
Our AWS cost audit reviews every repository, applies lifecycle policies, fixes cross-region pulls, and proves the saving against a clean baseline. On the performance model, you pay only from realized savings. No savings, no fee.
Book a cloud cost audit →The AWS Cost Optimization Field Guide includes the container checklist we run across ECR lifecycle policies, image size, and data transfer.
Frequently asked questions
How much does Amazon ECR cost?
Amazon ECR private repositories cost $0.10 per GB-month for stored images. Data transfer in is free, transfer to AWS services in the same region is free, and cross-region transfer out is $0.09 per GB. The main saving comes from lifecycle policies that delete old images and from keeping pulls in-region.
Does ECR charge for pulling images?
Pulling images to AWS services in the same region as the ECR repository is free of data transfer charges. Cross-region pulls cost $0.09 per GB, and pulls to the internet or across regions incur standard data transfer rates. Keeping compute and registry in the same region and using VPC endpoints avoids most pull-related cost.
How do lifecycle policies reduce ECR cost?
Lifecycle policies automatically expire untagged and old tagged images so ECR stops billing $0.10 per GB-month to store images no deployment uses. Most registries accumulate dozens of stale image versions per repository, so a policy that keeps only the last few tagged builds and clears untagged layers cuts storage meaningfully.
What is the biggest hidden ECR cost?
Cross-region replication and cross-region pulls. Replicating images to regions you do not deploy in adds $0.09 per GB transfer plus duplicate $0.10 per GB-month storage, and pulling from another region on every node scale-up multiplies transfer charges that in-region pulls would avoid entirely.
The short version
ECR bills $0.10 per GB-month for stored images and $0.09 per GB for cross-region transfer, while in-region pulls are free. Apply lifecycle policies to expire old images, shrink images with minimal base layers, keep pulls in-region with VPC endpoints, and replicate only where you deploy. When you want every repository reviewed and the saving proven down, that is part of what our AWS cost optimization service delivers.
Cloud pricing and service behavior change frequently. Verify the specifics in this guide against the providers’ own current documentation and the FinOps Foundation: AWS pricing ↗, AWS documentation ↗ and FinOps Foundation Framework ↗. This article also reflects Cloud Cost Room’s hands-on, vendor-neutral engagement experience.