Amazon ECR에서 프라이빗 이미지 복제

Amazon ECR에서 프라이빗 이미지 복제 (Private image replication in Amazon ECR)

Amazon ECR 프라이빗 레지스트리를 구성해 레포지토리의 복제를 지원할 수 있어요. Amazon ECR은 교차 리전 복제와 교차 계정 복제를 모두 지원해요. 교차 계정 복제가 발생하려면 대상 계정이 소스 레지스트리에서 복제를 허용하는 레지스트리 권한 정책을 구성해야 해요.

출처: 문서

본문

Amazon ECR 프라이빗 레지스트리를 구성해 레포지토리의 복제를 지원할 수 있어요. Amazon ECR은 교차 리전 복제와 교차 계정 복제를 모두 지원해요. 교차 계정 복제가 발생하려면 대상 계정이 소스 레지스트리에서 복제를 허용하는 레지스트리 권한 정책을 구성해야 해요. 자세한 내용은 "Private registry permissions in Amazon ECR"을 참고하세요.

이 문서는 교차 계정 복제 정책 요구 사항, 프라이빗 이미지 복제 고려 사항, 복제 예제, 복제 구성과 제거 방법을 다루어요.

교차 계정 복제 정책 요구 사항 (Cross-account replication policy requirements)

교차 계정 ECR 복제가 제대로 작동하려면 어떤 계정에 어떤 정책을 구성해야 하는지 이해해야 해요. 이 섹션은 소스 계정과 대상 계정 모두에 대한 정책 요구 사항을 명확히 해요.

정책 구성 개요

교차 계정 ECR 복제는 대상 계정에서만 정책 구성을 요구해요. 소스 계정에는 특별한 레포지토리 또는 레지스트리 정책이 필요하지 않아요.

  • 소스 계정: 레지스트리 설정에서 복제 규칙을 구성해요. 소스 레포지토리에 추가 정책이 필요하지 않아요.
  • 대상 계정: 소스 계정이 이미지를 복제할 수 있게 하는 레지스트리 권한 정책을 구성해요.

대상 레지스트리 정책 요구 사항

대상 계정은 소스 계정에 다음 액션을 수행할 권한을 부여하는 레지스트리 권한 정책을 구성해야 해요.

  • ecr:ReplicateImage – 소스 계정이 대상 레지스트리로 이미지를 복제할 수 있게 해요.
  • ecr:CreateRepository – 레포지토리가 아직 없으면 ECR이 대상 레지스트리에 레포지토리를 자동으로 생성할 수 있게 해요.

중요: ecr:CreateRepository 권한을 부여하지 않으면 복제가 성공하기 전에 대상 계정에 동일한 이름의 레포지토리를 수동으로 만들어야 해요.

대상 레지스트리 정책 예시:

{
   "Version":"2012-10-17",
   "Statement": [
       {
           "Sid": "AllowCrossAccountReplication",
           "Effect": "Allow",
           "Principal": {
               "AWS": "arn:aws:iam::111122223333:root"
           },
           "Action": [
               "ecr:ReplicateImage",
               "ecr:CreateRepository"
           ],
           "Resource": "*"
       }
   ]
}

소스 계정 요구 사항

소스 계정은 다음만 하면 돼요.

  • 레지스트리 설정에서 대상 계정과 리전을 지정하는 복제 규칙 구성하기
  • 복제를 구성하는 IAM 프린시펄이 필요한 ECR 권한을 가지고 있는지 확인하기

소스 레포지토리에는 추가 정책이 필요하지 않아요. 복제 권한을 부여하는 레포지토리 정책이 소스 레포지토리에 필요하지 않아요.

일반적인 오해 (Common misconceptions)

ECR 교차 계정 복제 정책에 대한 일반적인 오해는 다음과 같아요.

  • 오해: 소스 레포지토리가 대상 계정이 이미지를 복제하도록 허용하는 정책이 필요하다.
    • 현실: 소스 레포지토리는 복제를 위한 특별한 정책이 필요하지 않아요.
  • 오해: 소스와 대상 계정 모두 레지스트리 정책이 필요하다.
    • 현실: 대상 계정만 레지스트리 권한 정책이 필요해요.
  • 오해: 레포지토리 정책과 레지스트리 정책이 같은 것이다.
    • 현실: 레포지토리 정책은 개별 레포지토리에 대한 접근을 제어하고, 레지스트리 정책은 복제 같은 레지스트리 수준 작업을 제어해요.

복제 실패 문제 해결

교차 계정 복제가 실패하면 다음을 확인하세요.

  • 대상 계정에 레지스트리 권한 정책이 구성되어 있는지 확인
  • 레지스트리 정책에 ecr:ReplicateImage와 ecr:CreateRepository 액션이 모두 포함되어 있는지 확인
  • 대상 레지스트리 정책에 소스 계정 ID가 올바르게 지정되어 있는지 확인
  • 대상 레포지토리가 존재하는지 확인 (ecr:CreateRepository가 부여되지 않은 경우)
  • 실패한 CreateRepository 또는 ReplicateImage API 호출에 대해 CloudTrail 로그 검토

프라이빗 이미지 복제 고려 사항 (Considerations for private image replication)

프라이빗 이미지 복제를 사용할 때 다음 사항을 고려해야 해요.

  • 복제를 구성한 후 레포지토리에 푸시되거나 복원된 레포지토리 콘텐츠만 복제돼요. 레포지토리에 이미 존재하는 콘텐츠는 복제되지 않아요. 복제를 켠 후 이미지가 복원되면 복제돼요. 복제를 켜기 전에 복원되면 복제되지 않아요.
  • 복제가 발생하면 레포지토리 이름은 리전과 계정 전반에 걸쳐 동일하게 유지돼요. Amazon ECR은 복제 중에 레포지토리 이름 변경을 지원하지 않아요.
  • 프라이빗 레지스트리를 복제용으로 처음 구성할 때 Amazon ECR이 사용자를 대신해 서비스 연결 IAM 역할을 만들어요. 서비스 연결 IAM 역할은 Amazon ECR 복제 서비스에 레포지토리를 만들고 레지스트리에서 이미지를 복제하는 데 필요한 권한을 부여해요. 자세한 내용은 "Using service-linked roles for Amazon ECR"을 참고하세요.
  • 교차 계정 복제가 발생하려면 프라이빗 레지스트리 대상이 소스 레지스트리가 이미지를 복제하도록 허용하는 권한을 부여해야 해요. 이는 프라이빗 레지스트리 권한 정책을 설정해 수행해요. 자세한 내용은 "Private registry permissions in Amazon ECR"을 참고하세요.
  • 프라이빗 레지스트리의 권한 정책이 변경되어 권한을 제거하면, 이전에 부여된 진행 중인 복제는 완료될 수 있어요.
  • 교차 리전 복제가 발생하려면 소스와 대상 계정 모두 해당 리전에서 리전 간 복제 액션이 발생하기 전에 해당 리전에 옵트인(opt-in)되어 있어야 해요. 자세한 내용은 Amazon Web Services 일반 참조의 "Managing AWS Regions"을 참고하세요.
  • 교차 리전 복제는 AWS 파티션 간에는 지원되지 않아요. 예를 들어 us-west-2의 레포지토리는 cn-north-1로 복제할 수 없어요. AWS 파티션에 대한 자세한 내용은 AWS 일반 참조의 "ARN format"을 참고하세요.
  • 프라이빗 레지스트리의 복제 구성은 모든 규칙에 걸쳐 최대 25개의 고유 대상을 포함할 수 있으며, 규칙은 최대 25개까지예요. 각 규칙은 최대 100개의 필터를 포함할 수 있어요. 이를 통해 예를 들어 프로덕션용 이미지와 테스트용 이미지가 포함된 레포지토리에 대해 별도의 규칙을 지정할 수 있어요.
  • 복제 구성은 레포지토리 접두사를 지정해 프라이빗 레지스트리의 어떤 레포지토리가 복제되는지 필터링하는 것을 지원해요. 예시는 "Example: Configuring cross-Region replication using a repository filter"을 참고하세요.
  • 복제 액션은 이미지 푸시 또는 이미지 복원당 한 번만 발생해요. 예를 들어 us-west-2에서 us-east-1으로, us-east-1에서 us-east-2로 교차 리전 복제를 구성했다면 us-west-2로 푸시된 이미지는 us-east-1로만 복제되고 us-east-2로 다시 복제되지는 않아요. 이 동작은 교차 리전 복제와 교차 계정 복제 모두에 적용돼요.
  • 대부분의 이미지는 30분 이내에 복제되지만 드물게 복제가 더 오래 걸릴 수 있어요.
  • 레지스트리 복제는 삭제 액션이나 아카이브 액션을 수행하지 않아요. 복제된 이미지와 레포지토리는 더 이상 사용되지 않을 때 삭제하거나 아카이브할 수 있어요.
  • 복제할 이미지가 대상에서 아카이브되어 있다면 대상에서 복원돼요.
  • 이미지가 소스 리전에서 아카이브되면 복제 구성이 지정한 대상 리전에서는 아카이브되지 않아요.
  • IAM 정책을 포함한 레포지토리 정책과 수명 주기 정책은 복제되지 않으며 정의된 레포지토리 외에는 아무런 효과가 없어요.
  • 레포지토리 설정은 기본적으로 복제되지 않아요. 레포지토리 생성 템플릿을 사용해 레포지토리 설정을 복제할 수 있어요. 이 설정에는 태그 변경 가능성, 암호화, 레포지토리 권한, 수명 주기 정책이 포함돼요. 레포지토리 생성 템플릿에 대한 자세한 내용은 "Templates to control repositories created during a pull through cache, create on push, or replication action"을 참고하세요.
  • 레포지토리에 태그 불변성이 활성화되어 있고 기존 이미지와 같은 태그를 사용하는 이미지가 복제되면 해당 이미지는 복제되지만 중복 태그는 포함하지 않아요. 이로 인해 이미지 태그가 없어질 수 있어요.
  • 이미지를 복제할 때 블롭 마운팅(blob mounting)이 구성되어 있으면 ECR은 소스 레포지토리의 레이어가 대상 레지스트리에 이미 존재하는지 확인해요. 일부 레이어가 대상 레지스트리에 이미 존재하면 ECR은 해당 레이어를 마운트해요.

참고: 소스 레지스트리가 대상 레지스트리와 다르면, ECR이 복제된 레이어를 마운트하려면 두 레지스트리 모두 블롭 마운팅이 활성화되어 있어야 해요.

더 알아보기 (Learn more)