Amazon Web Services 한국 블로그

Amazon Elastic Container Registry를 위한 풀 스루 캐시 리포지토리 발표

컨테이너를 사용하여 애플리케이션을 호스팅하기로 선택한 조직, 개발 팀 및 개인 개발자는 고가용성과 보안을 활용하기 위해 Amazon Elastic Container Registry로부터 모든 이미지를 소싱하는 것이 필수적이거나 선호 사항일 수 있습니다. 이러한 요구 사항을 충족하기 위해 고객은 퍼블릭 레지스트리에서 프라이빗 Amazon Elastic Container Registry 리포지토리로 이미지를 수동으로 가져온 다음 동기화를 유지해야 하는 부담을 감수해야 했습니다. 이로 인해 운영 복잡성과 유지 관리 비용이 증가하여 개발자 생산성에 영향을 미칩니다. 또한 일부 레지스트리는 이미지를 다운로드할 수 있는 빈도에 대한 한도 또는 제한이 있을 수 있습니다. 이러한 제한에 도달하면 이미지 풀이 제한되거나 거부될 때 빌드 오류로 인해 개발자와 비즈니스의 출시 속도에 영향을 미치기 시작합니다.

오늘, 인증 없이 공개적으로 액세스 가능한 레지스트리에 대해 Amazon Elastic Container Registry에서 풀 스루 캐시(pull through cache) 리포지토리 지원을 발표했습니다. 풀 스루 캐시 리포지토리는 개발자가 퍼블릭 레지스트리로부터 소싱한 컨테이너 이미지에 대해 Amazon Elastic Container Registry의 향상된 성능, 보안 및 가용성을 제공합니다. 풀 스루 캐시 리포지토리의 이미지는 업스트림 공용 레지스트리와 자동으로 동기화되므로 이미지를 가져오고 주기적으로 업데이트하는 수동 작업이 필요 없습니다.

풀 스루 캐시 리포지토리는 모든 네트워크 트래픽을 비공개로 유지할 수 있는 AWS PrivateLink, 취약점을 탐지하기 위한 이미지 스캔, AWS Key Management Service(KMS) 키를 사용한 암호화, 교차 리전 복제 및 수명 주기 정책과 같은 Amazon Elastic Container Registry에 내장된 보안 기능의 이점을 제공합니다. 활성화하면 교차 리전 복제가 업데이트된 이미지를 추가 리전에 자동으로 배포하도록 설계되었습니다. 관련 리전에서 이미지를 다운로드할 수 있도록 풀(pull) URL을 업데이트하면 됩니다.

풀 스루 캐시 리포지토리에서 이미지를 사용할 때, 다운로드 제한은 개발자뿐만 아니라 애플리케이션을 지원하는 빌드 및 배포 인프라에도 더 이상 문제가 되지 않습니다. Amazon Elastic Container Registry는 캐시 리포지토리를 자동으로 동기화 상태로 유지하도록 설계되었지만 언제든지 리포지토리를 수동으로 동기화할 수도 있습니다. 원하는 경우 자동 동기화를 끌 수 있습니다.

Amazon Elastic Container Registry 풀 스루 캐시 리포지토리 시작하기
풀 스루 캐시 리포지토리를 설정하는 과정은 간단합니다. 다음 예제에서는 남아메리카(상파울루) 리전의 Amazon Elastic Container Registry Public을 업스트림 레지스트리로 사용하고 있습니다.

먼저 개인 레지스트리의 설정을 수정하여 공개적으로 액세스할 수 있는 업스트림 레지스트리를 참조하는 규칙을 추가해야 합니다(추가 업스트림 레지스트리가 필요한 경우 여러 규칙을 설정할 수 있음). Amazon Elastic Container Registry 콘솔에서 먼저 프라이빗 레지스트리(Private registry)를 선택한 다음 풀 스루 캐시(Pull through cache) 패널에서 편집(Edit)을 선택하여 설정을 변경합니다. 그러면 규칙 추가(Add rule)를 선택하는 풀 스루 캐시 구성(Pull through cache configuration) 페이지로 이동합니다.

풀 스루 캐시 규칙 생성(Create pull through cache rule) 페이지에서 업스트림 레지스트리를 선택합니다. 이 예에서는 ECR Public입니다. 또한 pull 명령에서 이미지를 참조할 때 사용할 네임스페이스도 설정해야 합니다. 이 예제에서는 제안된 네임스페이스인 ecr-public을 그대로 사용하겠습니다.

ECR Public을 업스트림 레지스트리로 구성

저장(Save)을 선택하면 새로 구성된 규칙이 나열된 풀 스루 캐시 구성 페이지로 돌아갑니다. 이제 이미지를 가져올 때 캐시 리포지토리를 활용할 준비가 되었습니다.

업스트림 레지스트리에 대해 새로 구성된 규칙

이미지를 참조하려면 <accountId>.dkr.ecr.<region>.amazonaws.com/<namespace>/<sourcerepo>:<tag>이라는 URL 형식을 사용하여 풀(pull) URL에서 선택한 네임스페이스를 지정해야 합니다. 이미지를 가져오면 네임스페이스와 연결된 캐시 리포지토리에서 이미지를 확인합니다. 제 경우에는 캐시 리포지토리가 아직 없지만 직접 생성할 필요는 없습니다. 이미지는 네임스페이스와 연결된 퍼블릭 레지스트리의 업스트림 리포지토리에서 가져온 다음, 자동으로 생성되는 새 캐시 리포지토리에 저장됩니다.

아래의 명령 프롬프트 세션에서 먼저 내 레지스트리를 사용하여 인증한 다음 Amazon Linux 2 이미지를 Amazon Elastic Container Registry Public에서 캐시로 가져옵니다.

C:\ aws ecr get-login-password --region sa-east-1 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.sa-east-1.amazonaws.com/ecr-public
Login Succeeded
C:\ docker pull 111122223333.dkr.ecr.sa-east-1.amazonaws.com/ecr-public/amazonlinux/amazonlinux:latest
latest: Pulling from ecr-public/amazonlinux/amazonlinux
e11e8d46e102: Pull complete
Digest: sha256:916dbbb288948b54c94b5b9f0769085aa601d4468d099e90d8a7da5cfa551b50
Status: Downloaded newer image for 111122223333.dkr.ecr.sa-east-1.amazonaws.com/ecr-public/amazonlinux/amazonlinux:latest
111122223333.dkr.ecr.us-west-2.amazonaws.com/ecr-public/amazonlinux/amazonlinux:latest

Amazon Elastic Container Registry 콘솔에서 리포지토리(Repositories) 페이지를 확인하면 풀 스루 캐시가 활성 상태라는 표시와 함께 가져온 이미지가 포함된 새 프라이빗 리포지토리가 생성되었음을 알 수 있습니다.

캐시 리포지토리의 가져온 이미지

이미지 및 풀 스루 캐시 리포지토리 작업은 Dockerfiles에서도 마찬가지로 간단합니다. 풀(pull) URL의 네임스페이스를 사용하여 필요한 이미지를 참조하면 됩니다. 이미지가 캐시 리포지토리에 없으면 이미지를 가져와 저장하게 됩니다. 캐시된 이미지는 24시간에 한 번 검사하여 캐시된 이미지가 최신 버전인지 확인합니다. 타이머는 캐시된 이미지를 마지막으로 가져온 시간을 기준으로 합니다.

지금 바로 풀 스루 캐시 리포지토리 사용 시작
현재 모든 상용 AWS 리전에서 Amazon Elastic Container Registry의 풀 스루 캐시 리포지토리를 활용할 수 있습니다. 풀 스루 캐시 리포지토리 사용에는 요금이 부과되지 않으며, 스토리지 및 데이터 전송에 대한 표준 Amazon Elastic Container Registry 요금만 적용됩니다. 요금에 대한 자세한 내용은 Amazon Elastic Container Registry 요금 페이지를 참조하시기 바랍니다. Amazon Elastic Container Registry 사용 설명서에서 풀 스루 캐시 리포지토리에 대해 자세히 알아보고 지금 바로 시작하세요.

— Steve