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하면 Amazon ECR이를 반환합니다. 또한 일부 변경 불가능한 태그에 대한 태그 업데이트를 활성화하려면 태그 이름을 입력하거나 와일드카드(*)를 사용하여 변경 불가능한 태그 제외 텍스트 상자에 여러 유사한 태그를 일치시킵니다.

    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"|"IMMUTABLE_WITH_EXCLUSION"|"MUTABLE_WITH_EXCLUSION", "imageTagMutabilityExclusionFilters": [ "filterType": "WILDCARD", "filter": "string" ], "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": "IMMUTABLE_WITH_EXCLUSION", "imageTagMutabilityExclusionFilters": [ { "filterType": "WILDCARD", "filter": "latest" }, { "filterType": "WILDCARD", "filter": "beta*" } ] "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