풀스루 캐시 규칙 사용 - Amazon ECR

풀스루 캐시 규칙 사용

Amazon ECR은 프라이빗 Amazon ECR 레지스트리의 원격 퍼블릭 레지스트리에서 리포지토리 캐싱을 지원합니다. Amazon ECR은 현재 Amazon ECR Public 및 Quay에 대한 풀스루 캐시 규칙 생성을 지원합니다. 외부 퍼블릭 레지스트리에 대한 풀스루 캐시가 만들어지면 Amazon ECR 프라이빗 레지스트리 URI를 사용하여 해당 외부 퍼블릭 레지스트리에서 이미지를 가져옵니다. 그러면 Amazon ECR이 리포지토리를 생성하고 해당 이미지를 캐시합니다. Amazon ECR 프라이빗 레지스트리 URI를 사용하여 캐시된 이미지를 가져오면 Amazon ECR은 원격 레지스트리를 점검하여 이미지의 새 버전이 있는지 확인하며, 최대 24시간마다 한 번씩 프라이빗 레지스트리를 업데이트합니다.

풀스루 캐시 사용 시 고려할 사항

Amazon ECR 풀스루 캐시를 사용할 때는 다음 사항을 고려해야 합니다.

  • 다음 리전에서는 풀스루 캐시 규칙 생성이 지원되지 않습니다.

    • 중국(베이징)(cn-north-1)

    • 중국(닝샤)(cn-northwest-1)

    • AWS GovCloud(미국 동부)(us-gov-east-1)

    • AWS GovCloud(미국 서부)(us-gov-west-1)

  • 풀스루 캐시를 사용하여 이미지를 가져올 경우 이미지를 처음 가져올 때 Amazon ECR FIPS 서비스 엔드포인트가 지원되지 않습니다. Amazon ECR FIPS 서비스 엔드포인트를 사용하면 후속 풀스루에서 작동합니다.

  • 프라이빗 레지스트리에 대해 최대 10개의 풀스루 캐시 규칙을 생성할 수 있습니다.

  • Amazon ECR 프라이빗 레지스트리 URI를 통해 캐시된 이미지를 가져오면 AWS IP 주소에 의해 이미지 풀이 시작됩니다. 이렇게 하면 이미지 풀이 퍼블릭 레지스트리가 가진 풀 레이트 할당량에 포함되지 않습니다.

  • Amazon ECR 프라이빗 레지스트리 URI를 통해 캐시된 이미지를 가져오면 Amazon ECR은 원격 리포지토리를 최대 24시간마다 한 번 점검하여 캐시된 이미지가 최신 버전인지 확인합니다. 이 타이머는 캐시된 이미지의 마지막 풀을 기반으로 합니다.

  • 풀스루 캐시 규칙을 사용하여 다중 아키텍처 이미지를 가져오면, Amazon ECR 리포지토리로 매니페스트 목록과 매니페스트 목록에서 참조되는 각 이미지를 가져옵니다. 특정 아키텍처만 가져오려는 경우 매니페스트 목록과 연결된 태그 대신 아키텍처와 연결된 이미지 다이제스트 또는 태그를 사용하여 이미지를 가져올 수 있습니다.

  • Amazon ECR은 서비스 연결 IAM 역할을 사용합니다. 이 역할은 Amazon ECR이 리포지토리를 생성하고 사용자를 대신하여 캐시된 이미지를 푸시하는 데 필요한 권한을 제공합니다. 서비스 연결 IAM 역할은 풀스루 캐시 규칙이 만들어질 때 자동으로 생성됩니다. 자세한 정보는 풀스루 캐시에 대한 Amazon ECR 서비스 연결 역할을 참조하세요.

  • 기본적으로 캐시된 이미지를 가져오는 IAM 사용자, 그룹 또는 역할에는 IAM 정책을 통해 부여된 권한이 있습니다. Amazon ECR 프라이빗 레지스트리 권한 정책을 사용하여 IAM 엔터티의 권한 범위를 추가로 지정할 수 있습니다. 자세한 정보는 레지스트리 권한 사용을 참조하세요.

  • 풀스루 캐시 워크플로를 사용하여 생성된 Amazon ECR 리포지토리는 다른 모든 Amazon ECR 리포지토리처럼 취급됩니다. 복제 및 이미지 스캔과 같은 모든 리포지토리 기능이 지원됩니다.

  • 풀스루 캐시 규칙을 사용하여 새 리포지토리를 생성하면 기본적으로 태그 불변성이 사용 중지됩니다. 리포지토리에서 태그 불변성을 수동으로 사용 설정하면 Amazon ECR이 캐시된 이미지를 업데이트하지 못할 수 있습니다.

  • 풀스루 캐시 규칙을 사용하여 새 리포지토리를 생성하면 기본적으로 AWS KMS 암호화가 사용 중지됩니다. AWS KMS 암호화를 사용하려면 첫 번째 이미지를 가져오기 전에 리포지토리를 수동으로 생성하면 됩니다.

  • 풀스루 캐시 규칙을 사용하여 이미지를 처음 가져올 때 AWS PrivateLink를 사용하여 인터페이스 VPC 엔드포인트를 사용하도록 Amazon ECR을 구성한 경우, NAT 게이트웨이를 사용하여 동일한 VPC에 퍼블릭 서브넷을 생성해야 합니다. 그런 다음 해당 프라이빗 서브넷에서 NAT 게이트웨이로, 모든 아웃바운드 트래픽을 인터넷으로 라우팅해야 풀 작업을 수행할 수 있습니다. 후속 이미지 풀에는 이 작업이 필요하지 않습니다. 자세한 내용은 Amazon Virtual Private Cloud 사용 설명서시나리오: 프라이빗 서브넷에서 인터넷 액세스를 참조하세요.

필수 IAM 권한

풀스루 캐시 규칙을 사용하기 위해서는 프라이빗 레지스트리에 인증하고 이미지를 푸시하고 끌어오는 데 필요한 Amazon ECR API 권한과 더불어 다음과 같은 추가 권한이 필요합니다.

  • ecr:CreatePullThroughCacheRule – 풀스루 캐시 규칙을 생성할 수 있는 권한을 부여합니다. 이 권한은 자격 증명 기반 IAM 정책을 통해 부여되어야 합니다.

  • ecr:BatchImportUpstreamImage – 외부 이미지를 검색하고 이 이미지를 프라이빗 레지스트리로 가져올 수 있는 권한을 부여합니다. 이 권한은 프라이빗 레지스트리 권한 정책, 자격 증명 기반 IAM 정책을 사용하거나 리소스 기반 리포지토리 권한 정책을 사용하여 부여될 수 있습니다. 리포지토리 권한에 대한 자세한 내용은 프라이빗 리포지토리 정책 섹션을 참조하세요.

  • ecr:CreateRepository – 프라이빗 레지스트리에 리포지토리를 생성할 수 있는 권한을 부여합니다. 이 권한은 캐시된 이미지를 저장하는 리포지토리가 이미 존재하지 않는 경우에 필요합니다. 이 권한은 자격 증명 기반 IAM 정책 또는 프라이빗 레지스트리 권한 정책에 의해 부여할 수 있습니다.

레지스트리 권한 사용

Amazon ECR 프라이빗 레지스트리 권한은 풀스루 캐시를 사용하도록 개별 IAM 엔터티의 권한 범위를 지정하는 데 활용할 수 있습니다. IAM 엔터티에 레지스트리 권한 정책에서 허용하는 권한보다 IAM 정책에서 부여한 권한이 많을 경우 IAM 정책이 우선합니다. 예를 들어, IAM 사용자에게 ecr:* 권한이 부여된 경우에는 레지스트리 수준에서 추가 권한이 필요하지 않습니다.

  1. Amazon ECR 콘솔(https://console.aws.amazon.com/ecr/)을 엽니다.

  2. 탐색 모음에서 프라이빗 레지스트리 권한 문을 구성할 리전을 선택합니다.

  3. 탐색 창에서 프라이빗 레지스트리(Private registry), 레지스트리 권한(Registry permissions)을 선택합니다.

  4. 레지스트리 권한(Registry permissions) 페이지에서 문 생성(Generate statement)을 선택합니다.

  5. 생성하려는 각 풀스루 캐시 권한 정책 문에 대해 다음을 수행합니다.

    1. 정책 유형(Policy type)으로 풀스루 캐시 정책(Pull through cache policy)을 선택합니다.

    2. 문 ID(Statement id)에서 풀스루 캐시 문 정책의 이름을 입력합니다.

    3. IAM 엔터티(IAM entities)에서 정책에 포함할 IAM 사용자, 그룹 또는 역할을 지정합니다.

    4. 리포지토리 네임스페이스(Repository namespace)로 정책을 연결할 풀스루 캐시 규칙을 선택합니다.

    5. 리포지토리 이름(Repository names)에서 규칙을 적용할 리포지토리 기본 이름을 지정합니다. 예를 들어, Amazon ECR Public에서 Amazon Linux 리포지토리를 지정하려는 경우 리포지토리 이름은 amazonlinux입니다.

AWS CLI를 사용하여 프라이빗 레지스트리 권한을 지정하려면 다음 AWS CLI 명령을 사용하세요.

  1. 레지스트리 정책의 내용과 ptc-registry-policy.json이라는 이름의 로컬 파일을 생성합니다. 다음 예제에서는 ecr-pull-through-cache-user IAM 사용자에게 리포지토리를 생성하고 과거에 생성된 풀스루 캐시 규칙에 연결된 업스트림 소스인 Amazon ECR 퍼블릭에서 이미지를 가져올 수 있는 권한을 부여합니다.

    { "Sid": "PullThroughCacheFromReadOnlyRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ecr-pull-through-cache-user" }, "Action": [ "ecr:CreateRepository", "ecr:BatchImportUpstreamImage" ], "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/ecr-public/*" }
    중요

    ecr-CreateRepository 권한은 캐시된 이미지를 저장하는 리포지토리가 이미 존재하지 않는 경우에만 필요합니다. 예를 들어 리포지토리 생성 작업과 이미지 풀 작업이 관리자 및 개발자와 같은 별도의 IAM 보안 주체에 의해 수행되는 경우가 해당됩니다.

  2. put-registry-policy 명령을 사용하여 레지스트리 정책을 설정합니다.

    aws ecr put-registry-policy \ --policy-text file://ptc-registry.policy.json

풀스루 캐시 규칙 생성

Amazon ECR 프라이빗 레지스트리에서 캐시하려는 이미지가 포함된 각 외부 퍼블릭 레지스트리에 대해 풀스루 캐시 규칙을 생성할 수 있습니다.

풀스루 캐시 규칙을 생성하는 방법(AWS Management Console)

  1. Amazon ECR 콘솔(https://console.aws.amazon.com/ecr/)을 엽니다.

  2. 탐색 모음에서 프라이빗 레지스트리 설정을 구성할 리전을 선택합니다.

  3. 탐색 창에서 프라이빗 레지스트리(Private registry), 풀스루 캐시(Pull through cache)를 선택합니다.

  4. 풀스루 캐시 구성(Pull through cache configuration) 페이지에서 규칙 추가(Add rule)를 선택합니다.

  5. 풀스루 캐시 규칙 생성(Create pull through cache rule) 페이지에서 다음을 수행합니다.

    1. 퍼블릭 레지스트리(Public registry)에서 미리 구성된 퍼블릭 레지스트리 중 하나를 선택합니다.

    2. Amazon ECR 리포지토리 네임스페이스(Amazon ECR repository namespace)의 경우, 소스 퍼블릭 레지스트리에서 가져온 이미지를 캐시할 때 사용할 리포지토리 네임스페이스를 지정합니다. 네임스페이스는 기본적으로 작성되지만, 사용자 지정 네임스페이스를 지정할 수도 있습니다.

    3. 저장(Save)을 선택하여 풀스루 캐시 규칙을 레지스트리 설정에 저장합니다.

  6. 생성하려는 각 풀스루 캐시에 대해 이전 단계를 반복합니다. 풀스루 캐시 규칙은 각 리전에 대해 별도로 생성됩니다.

다음 AWS CLI 명령을 사용하여 AWS CLI를 사용하는 프라이빗 레지스트리에 대한 풀스루 캐시 규칙을 생성할 수 있습니다.

  • create-pull-through-cache-rule (AWS CLI)

    다음 예제에서는 Amazon ECR 퍼블릭 레지스트리에 대한 풀스루 캐시 규칙을 생성합니다. 리포지토리 접두사를 ecr-public으로 지정합니다. 이렇게 하면 풀스루 캐시 규칙을 통해 생성한 각 리포지토리가 ecr-public/upstream-repository-name의 명명 체계를 사용하게 됩니다.

    aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix ecr-public \ --upstream-registry-url public.ecr.aws \ --region us-east-2

    다음 예제에서는 Quay 퍼블릭 레지스트리에 대한 풀스루 캐시 규칙을 생성합니다. 리포지토리 접두사를 quay로 지정합니다. 이렇게 하면 풀스루 캐시 규칙을 통해 생성한 각 리포지토리가 quay/upstream-repository-name의 명명 체계를 사용하게 됩니다.

    aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix quay \ --upstream-registry-url quay.io \ --region us-east-2

풀스루 캐시 이미지 작업

외부 퍼블릭 레지스트리에 대해 풀스루 캐시 규칙이 생성된 후에는 Amazon ECR 리포지토리 URI를 사용하여 원격 이미지를 가져오기만 하면 이미지가 로컬로 캐시됩니다. 다음은 지원되는 퍼블릭 레지스트리의 형식입니다. 풀스루 캐시 규칙을 사용하여 업스트림 이미지를 가져오는 도중에 오류가 발생하면 풀스루 캐시 규칙을 사용하여 풀링하는 경우 발생하는 오류 섹션을 참조하여 가장 일반적인 오류 및 해결 방법을 확인하세요.

참고

다음 예제에서는 AWS Management Console에서 사용하는 기본 Amazon ECR 리포지토리 네임스페이스 값을 활용합니다. 직접 구성한 Amazon ECR 프라이빗 리포지토리 URI를 사용해야 합니다.

Amazon ECR 퍼블릭

docker pull aws_account_id.dkr.ecr.region.amazonaws.com/ecr-public/repository_name/image_name:tag

Quay

docker pull aws_account_id.dkr.ecr.region.amazonaws.com/quay/repository_name/image_name:tag

풀스루 캐시 규칙 삭제

풀스루 캐시 규칙을 삭제하여 캐싱 동작을 중지할 수 있습니다. 풀스루 캐시 규칙을 삭제해도 캐시된 리포지토리나 이미지에는 아무런 영향을 주지 않으며, 향후 캐싱 동작만 중지됩니다.

풀스루 캐시 규칙을 삭제하는 방법(AWS Management Console)

  1. Amazon ECR 콘솔(https://console.aws.amazon.com/ecr/)을 엽니다.

  2. 탐색 모음에서 프라이빗 레지스트리 설정을 구성할 리전을 선택합니다.

  3. 탐색 창에서 프라이빗 레지스트리(Private registry), 풀스루 캐시(Pull through cache)를 선택합니다.

  4. 풀스루 캐시 구성(Pull through cache configuration) 페이지에서 삭제할 풀스루 캐시 규칙을 선택한 다음 규칙 삭제(Delete rule)를 선택합니다.

  5. 탐색 창에서 프라이빗 레지스트리(Private registry), 레지스트리 권한(Registry permissions)을 선택합니다.

  6. (선택 사항) 레지스트리 권한(Registry permissions) 페이지에서 기존 레지스트리 권한 정책 문을 검토합니다. 삭제된 풀스루 캐시 규칙에 대한 리포지토리 네임스페이스와 연결된 모든 레지스트리 권한 정책 문을 삭제할 수 있습니다.

다음 AWS CLI 명령을 사용하여 AWS CLI를 사용하는 풀스루 캐시 규칙을 삭제할 수 있습니다.

  • delete-pull-through-cache-rule(AWS CLI)

    다음 예제에서는 ecr-public 리포지토리 접두사를 사용하는 풀스루 캐시 규칙을 삭제합니다.

    aws ecr delete-pull-through-cache-rule \ --ecr-repository-prefix ecr-public \ --region us-east-2