Amazon ECR에서 리포지토리 생성 템플릿 만들기 - Amazon ECR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon ECR에서 리포지토리 생성 템플릿 만들기

리포지토리 생성 템플릿을 만들어 풀스루 캐시 또는 복제 작업 중에 Amazon ECR에서 사용자 대신 생성하는 리포지토리에 사용할 설정을 정의할 수 있습니다. 리포지토리 생성 템플릿이 생성되면 새로 생성되는 모든 리포지토리에 설정이 적용됩니다. 이는 이전에 만든 리포지토리에는 영향을 주지 않습니다.

템플릿을 사용하여 리포지토리를 설정할 때 KMS 키와 리소스 태그를 지정하는 옵션이 있습니다. 하나 이상의 템플릿에서 KMS 키, 리소스 태그 또는 둘의 조합을 사용하려는 경우 다음을 수행해야 합니다.

사용자 지정 역할을 구성한 후 레지스트리의 특정 템플릿에 연결할 수 있습니다.

리포지토리 생성 템플릿을 만들기 위한 IAM 권한

IAM 보안 주체가 리포지토리 생성 템플릿을 관리하려면 다음 권한이 필요합니다. 이 권한은 자격 증명 기반 IAM 정책을 사용하여 부여되어야 합니다.

  • ecr:CreateRepositoryCreationTemplate - 리포지토리 생성 템플릿을 생성할 수 있는 권한을 부여합니다.

  • ecr:UpdateRepositoryCreationTemplate - 리포지토리 생성 템플릿을 업데이트할 수 있는 권한을 부여합니다.

  • ecr:DescribeRepositoryCreationTemplates – 레지스트리의 리포지토리 생성 템플릿을 나열할 수 있는 권한을 부여합니다.

  • ecr:DeleteRepositoryCreationTemplate - 리포지토리 생성 템플릿을 삭제할 수 있는 권한을 부여합니다.

  • ecr:CreateRepository - Amazon ECR 리포지토리를 생성할 수 있는 권한을 부여합니다.

  • ecr:PutLifecyclePolicy - 수명 주기 정책을 생성하여 리포지토리에 적용할 수 있는 권한을 부여합니다. 이 권한은 리포지토리 생성 템플릿에 수명 주기 정책이 포함된 경우에만 필요합니다.

  • ecr:SetRepositoryPolicy - 리포지토리에 대한 권한 정책을 생성할 수 있는 권한을 부여합니다. 이 권한은 리포지토리 생성 템플릿에 리포지토리 정책이 포함된 경우에만 필요합니다.

  • iam:PassRole - 엔터티가 역할을 서비스 또는 애플리케이션에 전달할 수 있는 권한을 부여합니다. 이 권한은 사용자를 대신하여 작업을 수행하기 위해 역할을 사용해야 하는 서비스 및 애플리케이션에 필요합니다.

리포지토리 생성 템플릿 만들기

템플릿에 필요한 사전 요구 사항이 충족되었으면 계속해서 리포지토리 생성 템플릿을 생성할 수 있습니다.

AWS Management Console
리포지토리 생성 템플릿(AWS Management Console)을 만들려면
  1. Amazon ECR 콘솔(https://console.aws.amazon.com/ecr/)을 엽니다.

  2. 탐색 모음에서 리포지토리 생성 템플릿을 만들려는 리전을 선택합니다.

  3. 탐색 창에서 프라이빗 레지스트리, 리포지토리 생성 템플릿을 선택합니다.

  4. 리포지토리 생성 템플릿 페이지에서 템플릿 생성을 선택합니다.

  5. 1단계: 템플릿 정의 페이지에서 템플릿 세부 정보에 대해 특정 리포지토리 네임스페이스 접두사에 템플릿을 적용할 특정 접두사를 선택하고, ECR 레지스트리의 모든 접두사를 선택하여 해당 리전의 다른 템플릿과 일치하지 않는 모든 리포지토리에 템플릿을 적용합니다.

    1. 특정 접두사를 선택한 경우 접두사에 템플릿을 적용할 리포지토리 네임스페이스 접두사를 지정합니다. 접두사 끝에는 항상 위임된 /가 적용됩니다. 예를 들어 접두사 prodprod/로 시작하는 모든 리포지토리에 적용됩니다. 마찬가지로 접두사 prod/teamprod/team/으로 시작하는 모든 리포지토리에 적용됩니다.

    2. ECR 레지스트리에서 어떤 접두사를 선택하든 해당 접두사ROOT로 설정됩니다.

  6. 신청 대상에 이 템플릿이 적용될 Amazon ECR 워크플로를 지정합니다. 옵션은 PULL_THROUGH_CACHEREPLICATION입니다.

  7. 템플릿 설명에서 템플릿에 대한 설명(선택 사항)을 지정하고 다음을 선택합니다.

  8. 2단계: 리포지토리 생성 구성 추가 페이지에서 템플릿을 사용하여 생성한 리포지토리에 적용되는 리포지토리 설정 구성을 지정합니다.

    1. 이미지 태그 변경 가능성에서 사용할 태그 변경 가능성 설정을 선택합니다. 자세한 내용은 Amazon에서 이미지 태그 덮어쓰기 방지 ECR 단원을 참조하십시오.

      변경 가능을 선택하면 이미지 태그를 덮어쓸 수 있습니다. 복제 작업으로 생성되는 리포지토리에 사용되는 템플릿에는 이 설정을 사용하는 것이 좋습니다. 이렇게 하면 태그가 동일할 때 Amazon ECR에서 캐시된 이미지를 업데이트할 수 있습니다.

      변경 불가능을 선택하면 이미지 태그를 덮어쓸 수 없습니다. 리포지토리가 변경 불가능 태그로 구성된 후 리포지토리에 이미 존재하는 태그가 지정된 이미지를 푸시하려고 시도할 때 ImageTagAlreadyExistsException 오류가 반환됩니다. 리포지토리에 대해 태그 불변성을 켜면 모든 태그에 영향을 미치며 일부 태그는 변경할 수 있지만 다른 태그는 변경할 수 없습니다.

    2. 암호화 구성에서 사용할 암호화 설정을 선택합니다. 자세한 내용은 저장 시 암호화 단원을 참조하십시오.

      AES-256을 선택하면 Amazon ECR은 Amazon Simple Storage Service 관리형 암호화 키로 서버 측 암호화를 사용합니다. 이 암호화 키는 업계 표준 AES-256 암호화 알고리즘을 사용하여 저장 데이터를 암호화합니다. 이 서비스는 추가 비용 없이 제공됩니다.

      AWS KMS를 선택하면 Amazon ECR은 AWS Key Management Service(AWS KMS)에 저장된 키로 서버 측 암호화를 사용합니다. AWS KMS를 사용하여 데이터를 암호화하는 경우 Amazon ECR에서 관리하는 기본 AWS 관리형 키를 사용하거나 자체 AWS KMS 키(고객 관리형 키라고 함)를 지정할 수 있습니다.

      참고

      리포지토리가 생성된 후에는 리포지토리의 암호화 설정을 변경할 수 없습니다.

    3. 리포지토리 권한에서 이 템플릿을 사용하여 생성한 리포지토리에 적용할 리포지토리 권한 정책을 지정합니다. 선택적으로 드롭다운을 사용하여 가장 일반적인 사용 사례의 JSON 샘플 중 하나를 선택할 수 있습니다. 자세한 내용은 Amazon ECR의 프라이빗 리포지토리 정책 단원을 참조하십시오.

    4. 리포지토리 수명 주기 정책에서 이 템플릿을 사용하여 생성한 리포지토리에 적용할 리포지토리 수명 주기 정책을 지정합니다. 선택적으로 드롭다운을 사용하여 가장 일반적인 사용 사례의 JSON 샘플 중 하나를 선택할 수 있습니다. 자세한 내용은 Amazon ECR의 수명 주기 정책을 사용하여 이미지 정리 자동화 단원을 참조하십시오.

    5. 리포지토리 AWS 태그에서 이 템플릿을 사용하여 생성한 리포지토리와 연결할 메타데이터를 키-값 페어의 형태로 지정한 후 다음을 선택합니다. 자세한 내용은 Amazon ECR에서 프라이빗 리포지토리 태그 지정 단원을 참조하십시오.

    6. 리포지토리 생성 역할의 경우 템플릿에서 리포지토리 태그 또는 KMS를 사용할 때 리포지토리 생성 템플릿에 사용할 사용자 지정 IAM 역할을 드롭다운 메뉴에서 선택합니다(자세한 내용은 리포지토리 생성 템플릿에 대한 IAM 역할 생성 참조). 그런 후 다음을 선택합니다.

  9. 3단계: 검토 및 생성 페이지에서 리포지토리 생성 탬플릿에 지정한 설정을 검토합니다. 편집 옵션을 선택하여 변경합니다. 완료하면 생성을 선택합니다.

AWS CLI

create-repository-creation-template AWS CLI 명령은 프라이빗 레지스트리에 대한 리포지토리 생성 템플릿을 만드는 데 사용됩니다.

리포지토리 생성 템플릿(AWS CLI)을 만들려면
  1. AWS CLI를 사용하여 create-repository-creation-template 명령에 대한 스켈레톤을 생성합니다.

    aws ecr create-repository-creation-template \ --generate-cli-skeleton

    명령의 출력에는 리포지토리 생성 템플릿의 전체 구문이 표시됩니다.

    { "appliedFor":[""], // string array, but valid are PULL_THROUGH_CACHE and REPLICATION "prefix": "string", "description": "string", "imageTagMutability": "MUTABLE"|"IMMUTABLE", "repositoryPolicy": "string", "lifecyclePolicy": "string" "encryptionConfiguration": { "encryptionType": "AES256"|"KMS", "kmsKey": "string" }, "resourceTags": [ { "Key": "string", "Value": "string" } ], "customRoleArn": "string", // must be a valid IAM Role ARN }
  2. 이전 단계의 출력을 사용하여 repository-creation-template.json 파일을 생성합니다. 이 템플릿은 이미지를 미래의 리포지토리로 푸시하고 가져오도록 허용하는 리포지토리 정책이 있는 prod/*에 생성된 모든 리포지토리에 대한 KMS 암호화 키를 설정하고, 2주가 지난 이미지를 만료시키는 수명 주기 정책을 설정하고, ECR이 KMS 키에 액세스하여 미래의 리포지토리에 examplekey 리소스 태그를 할당할 수 있도록 하는 사용자 지정 역할을 설정합니다.

    { "prefix": "prod", "description": "For repositories cached from my PTC rule and in my replication configuration that start with 'prod/'", "appliedFor": ["PULL_THROUGH_CACHE","REPLICATION"], "encryptionConfiguration": { "encryptionType": "KMS", "kmsKey": "arn:aws:kms:us-west-2:111122223333:key/a1b2c3d4-5678-90ab-cdef-example11111" }, "resourceTags": [ { "Key": "examplekey", "Value": "examplevalue" } ], "imageTagMutability": "MUTABLE", "repositoryPolicy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"AllowPushPullIAMRole\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::111122223333:user\/IAMusername\"},\"Action\":[\"ecr:BatchGetImage\",\"ecr:BatchCheckLayerAvailability\",\"ecr:CompleteLayerUpload\",\"ecr:GetDownloadUrlForLayer\",\"ecr:InitiateLayerUpload\",\"ecr:PutImage\",\"ecr:UploadLayerPart\"]}]}", "lifecyclePolicy": "{\"rules\":[{\"rulePriority\":1,\"description\":\"Expire images older than 14 days\",\"selection\":{\"tagStatus\":\"any\",\"countType\":\"sinceImagePushed\",\"countUnit\":\"days\",\"countNumber\":14},\"action\":{\"type\":\"expire\"}}]}", "customRoleArn": "arn:aws:iam::111122223333:role/myRole" }
  3. 다음 명령을 사용하여 리포지토리 생성 템플릿을 만듭니다. 다음 예제에서 repository-creation-template.json 대신 이전 단계에서 생성한 구성 파일의 이름을 지정해야 합니다.

    aws ecr create-repository-creation-template \ --cli-input-json file://repository-creation-template.json