아마존 ECR
Amazon ECR(Amazon Elastic Container Registry)은 AWS가 제공하는 완전관리형 컨테이너 이미지 레지스트리 서비스로, Docker 이미지, OCI(Open Container Initiative) 이미지 및 OCI 호환 아티팩트를 저장·배포·관리하는 데 사용된다.[1]
Amazon ECR은 컨테이너 기반 애플리케이션 배포 파이프라인에서 이미지 저장소 역할을 하는 AWS 서비스이다. 사용자는 Docker CLI, AWS CLI, AWS SDK, CI/CD 도구 등을 이용해 컨테이너 이미지를 Amazon ECR 리포지토리에 푸시하고, Amazon ECS, Amazon EKS, AWS Lambda, AWS App Runner 또는 온프레미스 실행 환경에서 이미지를 풀하여 사용할 수 있다.[2]
Amazon ECR은 기본적으로 계정과 리전에 연결된 프라이빗 레지스트리를 제공하며, 하나의 레지스트리 안에 여러 리포지토리를 생성할 수 있다. 각 리포지토리는 이미지 태그와 이미지 다이제스트를 기준으로 Docker 이미지, OCI 이미지, OCI 호환 아티팩트를 관리한다.[3][4]
| 구성 요소 | 설명 |
|---|---|
| 레지스트리 | AWS 계정과 AWS 리전에 연결된 컨테이너 이미지 저장 영역이다. 프라이빗 레지스트리는 계정별로 제공되며 여러 리포지토리를 포함할 수 있다. |
| 리포지토리 | 특정 애플리케이션 또는 이미지 계열을 저장하는 논리적 단위이다. Docker 이미지, OCI 이미지, OCI 호환 아티팩트를 저장할 수 있다. |
| 이미지 | 컨테이너 실행에 필요한 파일 시스템과 메타데이터를 포함한 산출물이다. 일반적으로 태그 또는 다이제스트로 식별한다. |
| 이미지 태그 | 사람이 읽기 쉬운 이미지 식별자이다. 예를 들어 latest, v1.0.0 같은 값이 사용된다.
|
| 이미지 다이제스트 | 이미지 콘텐츠를 기준으로 생성되는 고유 식별자이다. 동일 태그가 변경될 수 있는 것과 달리 다이제스트는 특정 이미지 버전을 식별하는 데 유용하다. |
| 리포지토리 정책 | 리포지토리 단위로 접근 권한을 제어하는 리소스 기반 정책이다. |
- 프라이빗 컨테이너 이미지 저장소: 조직 내부 또는 특정 AWS 계정에서 사용하는 컨테이너 이미지를 안전하게 저장한다.
- 퍼블릭 레지스트리: Amazon ECR Public을 통해 공개 컨테이너 이미지를 배포할 수 있다.[5]
- AWS IAM 기반 접근 제어: AWS IAM 사용자, 역할, 서비스, 다른 AWS 계정에 대해 푸시·풀·관리 권한을 세밀하게 부여할 수 있다.[6]
- 리포지토리 정책: 리포지토리 단위의 리소스 기반 정책을 설정해 특정 주체의 접근을 허용하거나 제한할 수 있다.[7]
- 취약점 스캔: 컨테이너 이미지의 소프트웨어 취약점을 식별한다. 기본 스캔과 Amazon Inspector 연동 기반의 향상된 스캔을 제공한다.[8]
- 수명 주기 정책: 오래되었거나 사용하지 않는 이미지를 조건에 따라 만료 또는 아카이브하여 저장소를 관리한다.[9]
- 이미지 복제: 리전 간 또는 계정 간 프라이빗 이미지 복제를 지원한다.[10]
- 풀 스루 캐시: 외부 업스트림 레지스트리의 이미지를 Amazon ECR 프라이빗 레지스트리로 캐시해 반복적인 이미지 풀을 단순화할 수 있다.[11]
- AWS PrivateLink 연동: 인터페이스 VPC 엔드포인트를 사용해 Amazon VPC 내부에서 Amazon ECR API에 비공개로 접근할 수 있다.[12]
일반적인 사용 흐름은 다음과 같다.
- Amazon ECR 리포지토리를 생성한다.
- AWS CLI 또는 Docker CLI로 Amazon ECR 레지스트리에 인증한다.
- 로컬에서 빌드한 컨테이너 이미지에 Amazon ECR 리포지토리 주소를 태그로 지정한다.
- 이미지를 Amazon ECR 리포지토리에 푸시한다.
- Amazon ECS, Amazon EKS, AWS Lambda, AWS App Runner 또는 배포 파이프라인에서 해당 이미지를 풀하여 실행한다.
aws ecr get-login-password --region ap-northeast-2 \ | docker login --username AWS --password-stdin 123456789012.dkr.ecr.ap-northeast-2.amazonaws.com docker build -t sample-app . docker tag sample-app:latest 123456789012.dkr.ecr.ap-northeast-2.amazonaws.com/sample-app:latest docker push 123456789012.dkr.ecr.ap-northeast-2.amazonaws.com/sample-app:latest
Amazon ECR에 인증하려면 일반적으로 ecr:GetAuthorizationToken 권한이 필요하다. 인증 후에는 부여된 AWS IAM 권한과 리포지토리 정책에 따라 이미지 푸시, 풀, 삭제, 리포지토리 관리 작업을 수행한다.[13]
Amazon ECR의 접근 제어는 AWS IAM과 리포지토리 정책을 중심으로 구성된다. AWS IAM 정책은 사용자나 역할이 Amazon ECR API를 호출할 수 있는 권한을 정의하고, 리포지토리 정책은 특정 리포지토리에 대한 리소스 기반 권한을 정의한다.[6][7]
이미지 취약점 관리는 Amazon ECR의 핵심 보안 기능 중 하나이다. 기본 스캔은 컨테이너 이미지의 알려진 취약점을 식별하는 데 사용되며, 향상된 스캔은 Amazon Inspector와 통합되어 운영체제 패키지와 프로그래밍 언어 패키지 취약점까지 분석할 수 있다.[14]
네트워크 측면에서는 AWS PrivateLink 기반 인터페이스 VPC 엔드포인트를 구성해 인터넷 게이트웨이, NAT 디바이스, 가상 프라이빗 게이트웨이를 사용하지 않고 Amazon VPC에서 Amazon ECR API에 접근하도록 설계할 수 있다.[12]
Amazon ECR 저장소는 이미지가 누적되기 쉬우므로 운영 환경에서는 수명 주기 정책을 함께 사용하는 것이 일반적이다. 수명 주기 정책은 태그 상태, 이미지 개수, 이미지 나이, 마지막 풀 시점 등의 조건을 기준으로 이미지를 정리할 수 있으며, 정책 적용 전 미리보기 기능을 사용해 영향을 확인할 수 있다.[9][15]
멀티 리전 또는 다중 계정 환경에서는 이미지 복제를 사용해 배포 지연을 줄이고 장애 대응성을 높일 수 있다. Amazon ECR은 리전 간 복제와 계정 간 복제를 지원하며, 계정 간 복제의 경우 대상 계정의 레지스트리 권한 정책 설정이 필요하다.[10]
풀 스루 캐시는 Docker Hub, GitLab Container Registry 등 외부 업스트림 레지스트리 이미지를 Amazon ECR을 통해 가져오고 캐시하는 기능이다. 캐시된 태그 이미지는 이후 풀 요청에서 업스트림 변경 여부를 확인해 갱신을 시도한다.[11]
Amazon ECR은 주로 저장된 이미지 데이터 용량과 데이터 전송량을 기준으로 과금된다. 같은 리전 내에서 AWS 서비스가 Amazon ECR 이미지를 풀하는 경우와 리전 간 전송, 인터넷 전송 등은 과금 조건이 달라질 수 있으므로 운영 전 공식 요금표와 사용 리전을 확인해야 한다.[16]
- CI/CD 파이프라인: 빌드 서버에서 생성한 컨테이너 이미지를 Amazon ECR에 저장하고 배포 단계에서 동일 이미지를 사용한다.
- Amazon ECS·Amazon EKS 배포: Amazon ECS 태스크나 Amazon EKS 파드에서 Amazon ECR 이미지를 참조해 컨테이너를 실행한다.
- 서버리스 컨테이너 배포: AWS Lambda 컨테이너 이미지 또는 AWS App Runner 서비스의 이미지 저장소로 활용한다.
- 멀티 리전 배포: 이미지 복제를 이용해 여러 AWS 리전에 동일한 컨테이너 이미지를 배포한다.
- 외부 이미지 캐시: 풀 스루 캐시를 이용해 외부 레지스트리 의존도를 낮추고 이미지 풀 경로를 표준화한다.
| 구분 | 내용 |
|---|---|
| 장점 | AWS IAM, Amazon ECS, Amazon EKS, AWS Lambda, AWS App Runner 등 AWS 서비스와 통합성이 높고, 관리형 서비스이므로 별도 레지스트리 서버 운영 부담이 작다. |
| 장점 | 취약점 스캔, 수명 주기 정책, 이미지 복제, 풀 스루 캐시, AWS PrivateLink 연동 등 운영 기능을 제공한다. |
| 한계 | AWS 계정과 AWS 리전 구조에 종속되므로 멀티 클라우드 또는 온프레미스 중심 환경에서는 접근 경로, 인증 방식, 비용 구조를 별도로 설계해야 한다. |
| 한계 | 저장 이미지가 계속 누적될 경우 비용이 증가할 수 있어 이미지 태그 전략, 수명 주기 정책, 저장소 권한 관리를 함께 설계해야 한다. |
- ↑ Amazon Web Services, "What is Amazon Elastic Container Registry?", https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html, 확인일: 2026-06-26.
- ↑ Amazon Web Services, "Amazon Elastic Container Registry Documentation", https://docs.aws.amazon.com/ecr/, 확인일: 2026-06-26.
- ↑ Amazon Web Services, "Amazon ECR private registry", https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html, 확인일: 2026-06-26.
- ↑ Amazon Web Services, "Amazon ECR private repositories", https://docs.aws.amazon.com/AmazonECR/latest/userguide/Repositories.html, 확인일: 2026-06-26.
- ↑ Amazon Web Services, "What Is Amazon Elastic Container Registry Public?", https://docs.aws.amazon.com/AmazonECR/latest/public/what-is-ecr.html, 확인일: 2026-06-26.
- ↑ 6.0 6.1 Amazon Web Services, "How Amazon Elastic Container Registry works with IAM", https://docs.aws.amazon.com/AmazonECR/latest/userguide/security_iam_service-with-iam.html, 확인일: 2026-06-26.
- ↑ 7.0 7.1 Amazon Web Services, "Private repository policies in Amazon ECR", https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policies.html, 확인일: 2026-06-26.
- ↑ Amazon Web Services, "Scan images for software vulnerabilities in Amazon ECR", https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-scanning.html, 확인일: 2026-06-26.
- ↑ 9.0 9.1 Amazon Web Services, "Automate the cleanup of images by using lifecycle policies in Amazon ECR", https://docs.aws.amazon.com/AmazonECR/latest/userguide/LifecyclePolicies.html, 확인일: 2026-06-26.
- ↑ 10.0 10.1 Amazon Web Services, "Private image replication in Amazon ECR", https://docs.aws.amazon.com/AmazonECR/latest/userguide/replication.html, 확인일: 2026-06-26.
- ↑ 11.0 11.1 Amazon Web Services, "Sync an upstream registry with an Amazon ECR private registry", https://docs.aws.amazon.com/AmazonECR/latest/userguide/pull-through-cache.html, 확인일: 2026-06-26.
- ↑ 12.0 12.1 Amazon Web Services, "Amazon ECR interface VPC endpoints (AWS PrivateLink)", https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html, 확인일: 2026-06-26.
- ↑ Amazon Web Services, "Pulling an image to your local environment from an Amazon ECR private repository", https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-pull-ecr-image.html, 확인일: 2026-06-26.
- ↑ Amazon Web Services, "Scan images for OS and programming language package vulnerabilities in Amazon ECR", https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-scanning-enhanced.html, 확인일: 2026-06-26.
- ↑ Amazon Web Services, "Creating a lifecycle policy preview in Amazon ECR", https://docs.aws.amazon.com/AmazonECR/latest/userguide/lpp_creation.html, 확인일: 2026-06-26.
- ↑ Amazon Web Services, "Amazon ECR Pricing", https://aws.amazon.com/ecr/pricing/, 확인일: 2026-06-26.
