Elastic Container Registry
일관되고 가벼운 컨테이너 런타임 실행환경을 위해 빌드된 이미지들을 저장하는 곳이 컨테이너 이미지 레지스트리이다. 대표적으로 컨테이너 플랫폼으로는 도커가 있고, 도커 이미지의 레지스트리로 도커 허브가 있다. 도커 이미지와 같은 컨테이너 표준 OCI 이미지의 저장소를 관리형 서비스로 제공하는 것이 AWS ECR이다.
퍼블릭 레지스트리나 ECR 모두 기본적인 레지스트리 기능을 제공한다. 외부에서 pull 할 수 있는 이미지들을 모아놓을 수 있는 허브로서의 기능성이다. ECR은 이외에도 추가적인 기능을 제공한다.
Lifecycle Policy
ECR 내의 오래된 이미지들을 자동으로 삭제할 수 있는 정책을 정할 수 있다. ECR은 보관된 이미지 용량만큼 비용이 부과되기 때문에 라이프사이클 정책을 통해서 효율적으로 리소스를 관리할 수 있다.
이미지 스캔
ECR은 자체적인 이미지 스캔을 통해 레지스트리 내의 repository에 이미지를 푸쉬 할 때 OS나 언어 패키지 등을 스캔해 취약성을 검토한다.
Enhanced scanning을 사용하면 푸쉬 스캔 뿐만 아니라 Amazon Inspector를 통해 지속적인 연속 스캔도 제공한다. 물론 더 비싸겠지만.
ECR Replication
ECR Private 레지스트리는 region 별로 존재한다. multi region에 서비스를 배포하는 사용자라면 쿠버네티스 등 컨테이너 오케스트레이션을 사용할 때 배포 시 컨테이너 이미지를 pull 하기 위해 ECR repository가 존재하는 region에서 pull을 받아야 한다. 그렇게 되면 특정한 repository에 부하가 걸릴 수도 있고, 물리적으로 먼 region에서 pull을 하는 것이라면 지연도 생긴다. Cross region/account replication을 통해 이미지를 복제 해놓는다면 이러한 어려움을 해결할 수 있다.
Pull Through Cache
ECR 레지스트리를 다른 레지스트리에 연동시켜 놓을 수 있다. 연동 대상인 업스트림 레지스트리는 ECR 레지스트리일 필요는 없고 도커 허브 등 다른 퍼블릭 레지스트리여도 된다. 연동된 레지스트리의 repository에서 이미지를 당겨올 수 있는데, ECR은 효율을 위해 업스트림의 repository를 캐싱할 수 있다. 정기적으로 캐싱된 repository의 최신화 상태를 확인하며 자체적으로 업데이트하고, 사용자는 신경쓰지않고 ECR을 통해 이미지를 사용한다면 ECR을 중심으로 여러 레지스트리의 이미지를 사용할 수 있다.
인증 및 엑세스 제어
권한이 부여된 AWS 사용자가 아닌 다른 사용자의 접근을 차단할 수 있다. 역할 기반 권한 제어를 통한 ECR 레지스트리에 대한 접근 뿐만 아니라 레지스트리 내의 개별적인 repository나 그 안의 이미지에도 리소스 기반 권한을 통해 세세한 엑세스를 제어할 수 있다.
AWS 서비스 연동성
어찌보면 AWS에 종속되는 의존도가 커지니 단점이라고 볼 수도 있겠지만, AWS에서 관리형으로 모든 것을 해결할 수 있다는 나름의 장점이 있다고 생각한다. ECS와 EKS는 단순히 이미지가 저장된 repository의 주소만 알면 될테니 어느 레지스트리를 쓰던 마찬가지 일 수도 있다. 하지만 IAM 사용자/역할과 리소스 기반 정책을 이용한 세세한 엑세스 제어, 모니터링을 위한 CloudTrail이나 CloudWatch, EventBridge 등을 통해 다른 서비스 트리거 등 손쉽게 다른 AWS 서비스와 연동이 용이하다.
ECR Public
ECR을 사용한다면 기본적으로 Private 레지스트리를 사용하게 된다. ECR도 Public 레지스트리가 존재한다. 물론 Public 레지스트리에선 ECR을 사용하는 이점이 적겠지만, 여전히 ECR의 관리형 서비스를 이용할 수 있다.
장점
Public 레지스트리의 가장 큰 장점은 비용이다. 최대 50GB의 이미지를 무료로 저장할 수 있고, 매월 500GB의 pull이 무료로 가능하다.
그리고 도커 허브처럼 다른 사용자들이 올리거나 amazon/docker official 이미지 등의 퍼블릭 이미지 허브인 ECR Public Gallery가 있다.
ECR Public Gallery
Amazon ECR Public Gallery is a website that allows anyone to browse and search for public container images, view developer-provided details, and see pull commands
gallery.ecr.aws
IAM 사용자/역할 기반 정책이나 리소스 기반 정책을 여전히 사용할 수 있다는 것이나 이미지 저장 시 암호화가 되는 것이나 CloudTrail 등을 연동할 수 있는 것도 장점이다.
단점
단점으로는 Multi-region이 아니다. ECR Public은 `us-east-1`에만 존재하며, 정책을 통해 엑세스 제어를 한다고 해도 다른 region에서 접근 시 latency가 발생하고 이미지 pull 요청이 몰리면 느려질 수도 있다.
그리고 기능도 ECR Private에서 제공하는 것에 비해 일부는 지원이 되지 않는다. 라이프사이클 정책을 정할 수 없으며 cross region replication등은 당연히 지원되지 않는다.
비용
Public과 Private 모두 공통적으로 월 $0.1/GB의 스토리지 비용이 발생한다. 그 외엔 이미지 pull 시 발생하는 egress 비용이 부과되지만, 대상이 같은 region의 AWS 서비스라면 부과되지 않는다.
기본적으로 ECR Public은 거의 무료라고 생각해도 괜찮을 것 같다. 50GB의 저장이 가능하고, AWS 사용자라면 월 5TB의 egress가 가능하다. 5TB 초과 시에도 AWS 서비스에서 이미지를 pull 한 것이라면 무료고, 아닐 시에만 월 $0.9/GB가 발생한다.
ECR Private은 프리티어로 초기 1년만 500MB의 저장이 무료다. 같은 region을 제외한 egress 비용은 서울을 기준으로 대략 월 $0.12/GB 정도라고 생각하면 될 것 같다.
예시
AWS 웹에 나와있는 예시들을 표현해봤다.
1. 월 40GB 이미지 저장 + 같은 region의 ECS에서 월 1TB 이미지 pull
2. 월 20GB 이미지 저장 + 다른 region의 ECS에서 월 50GB 이미지 pull
3. Public ECR 무료 범위
4. 외부에서 6TB 이미지 pull + AWS region 내에서 8TB 이미지 pull
'DevOps > AWS' 카테고리의 다른 글
AWS - Elastic Container Service(ECS) 구성과 Fargate (0) | 2025.04.14 |
---|---|
AWS SAA - Auto Scaling Group(ASG) (0) | 2025.03.08 |
AWS SAA - Elastic Load Balancer(ELB) & Elastic Beanstalk(EB) (0) | 2024.11.03 |
AWS SAA - EC2 & AMI (3) | 2024.11.01 |
AWS Certified Solution Architect - Associate (AWS SAA) 시작 (2) | 2024.10.31 |