

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

# Amazon ECR의 프라이빗 이미지
프라이빗 이미지

Amazon ECR은 Docker 이미지, Open Container Initiative(OCI) 이미지 및 OCI 호환 아티팩트를 프라이빗 리포지토리에 저장합니다. Docker CLI를 사용하거나 선호하는 클라이언트를 사용하여 이미지를 리포지토리로 푸시 및 풀링할 수 있습니다.

OCI v1.1에 대한 Amazon ECR 지원을 사용하면 OCI [Referrers API](https://github.com/opencontainers/distribution-spec/blob/main/spec.md#enabling-the-referrers-api)로 정의된 참조 아티팩트를 저장하고 관리할 수 있습니다. 아티팩트에는 서명, 소프트웨어 자재 명세서(SBoM), Helm 차트, 스캔 결과 및 증명이 포함됩니다. 컨테이너 이미지의 아티팩트 세트는 해당 컨테이너와 함께 전송되고 리포지토리의 사용된 이미지로 계산되는 별도의 이미지로 저장됩니다.

[Amazon ECR에서 이미지 서명](image-signing.md) 및 [Amazon ECR 프라이빗 리포지토리에서 서명 및 기타 아티팩트 삭제](image-artifact-delete.md) 페이지에는 서명 관련 아티팩트를 사용하는 방법에 대한 예가 나와 있습니다. 컨테이너 이미지 서명에 대한 자세한 내용은AWS Signer 개발자 안내서**의 [컨테이너 이미지 서명](https://docs.aws.amazon.com/signer/latest/developerguide/container-workflow.html)을 참조하세요.

**Topics**
+ [

# Amazon ECR 프라이빗 리포지토리에 이미지 푸시
](image-push.md)
+ [

# Amazon ECR 프라이빗 리포지토리에서 서명 및 기타 아티팩트 삭제
](image-artifact-delete.md)
+ [

# Amazon ECR에서 이미지 세부 정보 보기
](image-info.md)
+ [

# Amazon ECR 프라이빗 리포지토리에서 로컬 환경으로 이미지 가져오기
](docker-pull-ecr-image.md)
+ [

# Amazon Linux 컨테이너 이미지 가져오기
](amazon_linux_container_image.md)
+ [

# Amazon ECR에서 이미지 삭제
](delete_image.md)
+ [

# Amazon ECR에 이미지 보관
](archive_restore_image.md)
+ [

# Amazon ECR에서 이미지 태그 다시 지정
](image-retag.md)
+ [

# Amazon ECR에서 이미지 태그를 덮어쓰지 않도록 방지
](image-tag-mutability.md)
+ [

# Amazon ECR에서 지원하는 컨테이너 이미지 매니페스트 형식
](image-manifest-formats.md)
+ [

# Amazon ECS에서 Amazon ECR 이미지 사용
](ECR_on_ECS.md)
+ [

# Amazon EKS에서 Amazon ECR 이미지 사용
](ECR_on_EKS.md)

# Amazon ECR 프라이빗 리포지토리에 이미지 푸시
이미지 푸시

Docker 이미지, 매니페스트 목록 및 Open Container Initiative(OCI) 이미지 및 호환 가능한 아티팩트를 프라이빗 리포지토리에 푸시할 수 있습니다.

Amazon ECR은 이미지를 다른 리포지토리에 복제하는 방법을 제공합니다. 프라이빗 레지스트리 설정에서 복제 구성을 지정하여 소유한 레지스트리에서 다른 리전과 다른 계정으로 복제할 수 있습니다. 자세한 내용은 [Amazon ECR의 프라이빗 레지스트리 설정](registry-settings.md) 단원을 참조하십시오.

**참고**  
현재 아카이브된 이미지를 푸시하면 해당 이미지가 아카이브에서 자동으로 복원되고 제거됩니다. 이미지 보관 및 복원에 대한 자세한 내용은 섹션을 참조하세요[Amazon ECR에 이미지 보관](archive_restore_image.md).

레지스트리 BLOB 탑재가 활성화되고 탑재 파라미터가 포함된 경우 Amazon ECR은 푸시 작업 중에 레지스트리의 기존 계층을 자동으로 확인합니다. 계층이 동일한 레지스트리 내의 다른 리포지토리에 이미 있는 경우 Amazon ECR은 중복을 업로드하는 대신 기존 계층을 탑재합니다. 자세한 내용은 [Amazon ECR에 Blob 탑재](blob-mounting.md) 단원을 참조하십시오.

**Topics**
+ [

# 이미지를 Amazon ECR 프라이빗 리포지토리로 푸시하기 위한 IAM 권한
](image-push-iam.md)
+ [

# Amazon ECR 프라이빗 리포지토리에 Docker 이미지 푸시
](docker-push-ecr-image.md)
+ [

# Amazon ECR 리포지토리에 다중 아키텍처 이미지 푸시
](docker-push-multi-architecture-image.md)
+ [

# Amazon ECR 리포지토리에 Helm 차트 푸시
](push-oci-artifact.md)

# 이미지를 Amazon ECR 프라이빗 리포지토리로 푸시하기 위한 IAM 권한
필수 IAM 권한

사용자가 이미지를 Amazon ECR 프라이빗 리포지토리로 푸시하려면 IAM 권한이 필요합니다. 최소 권한을 부여하는 모범 사례에 따라 특정 리포지토리에 대한 액세스 권한을 부여할 수 있습니다. 또한 모든 리포지토리에 대한 액세스 권한을 부여할 수도 있습니다.

사용자는 인증 토큰을 요청하여 이미지를 푸시하려는 각 Amazon ECR 레지스트리에 대해 인증해야 합니다. Amazon ECR은 다양한 수준에서 사용자 액세스를 제어하는 여러 AWS 관리형 정책을 제공합니다. 자세한 내용은 [AWS Amazon Elastic Container Registry에 대한 관리형 정책](security-iam-awsmanpol.md) 단원을 참조하십시오.

또한 사용자 고유의 IAM 정책을 만들 수도 있습니다. 다음 IAM 정책은 이미지를 특정 리포지토리로 푸시하는 데 필요한 권한을 부여합니다. 특정 리포지토리에 대한 권한을 제한하려면 리포지토리의 전체 Amazon 리소스 이름(ARN)을 사용합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:CompleteLayerUpload",
                "ecr:UploadLayerPart",
                "ecr:InitiateLayerUpload",
                "ecr:BatchCheckLayerAvailability",
                "ecr:PutImage",
                "ecr:BatchGetImage"
            ],
            "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/repository-name"
        },
        {
            "Effect": "Allow",
            "Action": "ecr:GetAuthorizationToken",
            "Resource": "*"
        }
    ]
}
```

------

다음 IAM 정책은 이미지를 모든 리포지토리로 푸시하는 데 필요한 권한을 부여합니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                    "ecr:CompleteLayerUpload",
                    "ecr:GetAuthorizationToken",
                    "ecr:UploadLayerPart",
                    "ecr:InitiateLayerUpload",
                    "ecr:BatchCheckLayerAvailability",
                    "ecr:PutImage",
                    "ecr:BatchGetImage"
            ],
            "Resource": "arn:aws:ecr:us-west-2:111122223333:repository/*"
        } 
    ]
}
```

# Amazon ECR 프라이빗 리포지토리에 Docker 이미지 푸시
Docker 이미지 푸시하기

**docker push** 명령을 사용하여 컨테이너 이미지를 Amazon ECR 리포지토리로 푸시할 수 있습니다.

Amazon ECR은 다중 아키텍처 이미지에 사용되는 Docker 매니페스트 목록 생성 및 푸시도 지원합니다. 자세한 내용은 [Amazon ECR 리포지토리에 다중 아키텍처 이미지 푸시](docker-push-multi-architecture-image.md) 단원을 참조하세요.

**Amazon ECR 리포지토리에 Docker 이미지를 푸시하려면**

이미지를 푸시하기 전에 Amazon ECR 리포지토리가 존재하거나 리포지토리 생성 템플릿이 정의되어 있어야 합니다. 자세한 내용은 [이미지를 저장할 Amazon ECR 프라이빗 리포지토리 생성](repository-create.md) 및 [풀스루 캐시, 푸시 시 생성 또는 복제 작업 중에 생성된 리포지토리를 제어하는 템플릿](repository-creation-templates.md) 섹션을 참조하세요.

1. 이미지를 푸시하려는 Amazon ECR 레지스트리에 대해 Docker 클라이언트를 인증합니다. 인증 토큰은 사용되는 레지스트리마다 필요하며, 12시간 동안 유효합니다. 자세한 정보는 [Amazon ECR의 프라이빗 레지스트리 인증](registry_auth.md)을 참조하세요.

   Amazon ECR 레지스트리에 대해 Docker를 인증하려면 **aws ecr get-login-password** 명령을 실행합니다. Amazon ECR 인증 토큰을 **docker login** 명령에 전달할 때 사용자 이름으로 `AWS` 값을 사용하고, 인증하려는 Amazon ECR 레지스트리 URI를 지정합니다. 여러 레지스트리에 대해 인증하는 경우 각 레지스트리에 대해 명령을 반복해야 합니다.
**중요**  
오류가 발생하면 최신 버전의 AWS CLI를 설치하거나 업그레이드합니다. 자세한 내용은 *AWS Command Line Interface 사용자 가이드*에서 [AWS Command Line Interface설치](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)를 참조하세요.

   ```
   aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
   ```

1. 아직 푸시하려는 레지스트리에 이미지 리포지토리가 없고 리포지토리 생성 템플릿이 정의된 경우 리포지토리 생성 템플릿의 접두사와 원하는 리포지토리 이름을 사용하여 이미지를 푸시할 수 있습니다. ECR은 리포지토리 생성 템플릿의 사전 정의된 설정을 사용하여 리포지토리를 자동으로 생성합니다.

   일치하는 리포지토리 생성 템플릿이 정의되지 않은 경우 리포지토리를 생성해야 합니다. 자세한 내용은 [풀스루 캐시, 푸시 시 생성 또는 복제 작업 중에 생성된 리포지토리를 제어하는 템플릿](repository-creation-templates.md) 또는 [이미지를 저장할 Amazon ECR 프라이빗 리포지토리 생성](repository-create.md)을 참조하세요.

1. 푸시할 로컬 이미지를 식별합니다. **docker images** 명령을 실행하여 시스템에 있는 컨테이너 이미지를 나열합니다.

   ```
   docker images
   ```

   명령 결과 출력에서 *repository:tag* 값 또는 이미지 ID를 확인하여 이미지를 식별할 수 있습니다.

1. <a name="image-tag-step"></a>사용할 Amazon ECR 레지스트리, 리포지토리 및 이미지 태그 이름 조합(선택 사항)이 있는 이미지에 태그를 지정합니다. 레지스트리 형식은  `aws_account_id.dkr.ecr.region.amazonaws.com`입니다. 리포지토리 이름은 이미지에 대해 생성한 리포지토리와 일치해야 합니다. 이미지 태그를 생략하면 태그가 `latest`인 것으로 간주됩니다.

   다음 예시에서는 ID * e9ae3c220b23*을 로 사용하여 로컬 이미지에 태그를 지정합니다`aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:tag`.

   ```
   docker tag e9ae3c220b23 aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:tag
   ```

1. <a name="image-push-step"></a>**docker push** 명령을 사용하여 이미지를 푸시합니다.

   ```
   docker push aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:tag
   ```

1. (선택 사항) [Step 4](#image-tag-step)과 [Step 5](#image-push-step)(을)를 반복하여 이미지에 추가 태그를 적용하고 이러한 태그를 Amazon ECR에 푸시합니다.

# Amazon ECR 리포지토리에 다중 아키텍처 이미지 푸시
다중 아키텍처 이미지 푸시

Docker 매니페스트 목록을 생성하고 푸시하여 다중 아키텍처 이미지를 Amazon ECR 리포지토리에 푸시할 수 있습니다. *매니페스트 목록*은 하나 이상의 이미지 이름을 지정하여 생성되는 이미지 목록입니다. 대부분의 경우 매니페스트 목록은 다양한 운영 체제 또는 아키텍처에서 동일한 기능을 제공하는 이미지에서 생성됩니다. 매니페스트 목록은 필수는 아닙니다. 자세한 내용은 [도커 매니페스트](https://docs.docker.com/engine/reference/commandline/manifest/)를 참조하세요.

매니페스트 목록은 다른 Amazon ECR 이미지와 마찬가지로 Amazon ECS 작업 정의 또는 Amazon EKS 포드 사양에서 가져오거나 참조할 수 있습니다.

 **사전 조건** 
+ Docker CLI에서 실험적 기능을 켭니다. 실험적 기능에 대한 자세한 내용은 Docker 설명서의 [실험적 기능](https://docs.docker.com/engine/reference/commandline/cli/#experimental-features)을 참조하세요.
+ 이미지를 푸시하기 전에 Amazon ECR 리포지토리가 있어야 합니다. 자세한 내용은 [이미지를 저장할 Amazon ECR 프라이빗 리포지토리 생성](repository-create.md) 단원을 참조하십시오.
+ Docker 매니페스트를 생성하려면 먼저 이미지를 리포지토리로 푸시해야 합니다. 이미지 푸시에 대한 자세한 내용은 [Amazon ECR 프라이빗 리포지토리에 Docker 이미지 푸시](docker-push-ecr-image.md) 단원을 참조하세요.

**다중 아키텍처 Docker 이미지를 Amazon ECR 리포지토리에 푸시하려면**

1. 이미지를 푸시하려는 Amazon ECR 레지스트리에 대해 Docker 클라이언트를 인증합니다. 인증 토큰은 사용되는 레지스트리마다 필요하며, 12시간 동안 유효합니다. 자세한 정보는 [Amazon ECR의 프라이빗 레지스트리 인증](registry_auth.md)을 참조하세요.

   Amazon ECR 레지스트리에 대해 Docker를 인증하려면 **aws ecr get-login-password** 명령을 실행합니다. Amazon ECR 인증 토큰을 **docker login** 명령에 전달할 때 사용자 이름으로 `AWS` 값을 사용하고, 인증하려는 Amazon ECR 레지스트리 URI를 지정합니다. 여러 레지스트리에 대해 인증하는 경우 각 레지스트리에 대해 명령을 반복해야 합니다.
**중요**  
오류가 발생하면 최신 버전의 AWS CLI를 설치하거나 업그레이드합니다. 자세한 내용은 *AWS Command Line Interface 사용자 가이드*에서 [AWS Command Line Interface설치](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)를 참조하세요.

   ```
   aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
   ```

1. 이미지 태그를 확인하여 리포지토리의 이미지를 나열합니다.

   ```
   aws ecr describe-images --repository-name my-repository
   ```

1. Docker 매니페스트 목록을 생성합니다. `manifest create` 명령은 참조된 이미지가 이미 리포지토리에 있는지 확인하고 로컬로 매니페스트를 생성합니다.

   ```
   docker manifest create aws_account_id.dkr.ecr.region.amazonaws.com/my-repository aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:image_one_tag aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:image_two
   ```

1. (선택 사항) Docker 매니페스트 목록을 검사합니다. 이렇게 하면 매니페스트 목록에서 참조되는 각 이미지 매니페스트의 크기와 다이제스트를 확인할 수 있습니다.

   ```
   docker manifest inspect aws_account_id.dkr.ecr.region.amazonaws.com/my-repository
   ```

1. Docker 매니페스트 목록을 Amazon ECR 리포지토리에 푸시합니다.

   ```
   docker manifest push aws_account_id.dkr.ecr.region.amazonaws.com/my-repository
   ```

# Amazon ECR 리포지토리에 Helm 차트 푸시
Helm 차트 푸시

Amazon ECR 프라이빗 리포지토리에 Open Container Initiative(OCI) 아티팩트를 푸시할 수 있습니다. 이 기능의 예를 보려면 다음 단계를 따라 Helm 차트를 Amazon ECR로 푸시합니다.

Amazon ECR에서 호스팅되는 Helm 차트를 Amazon EKS에서 사용하는 방법에 대한 자세한 내용은 [Amazon EKS 클러스터에 Helm 차트 설치](using-helm-charts-eks.md) 섹션을 참조하세요.

**Helm 차트를 Amazon ECR 리포지토리로 푸시하려면**

1. Helm 클라이언트의 최신 버전을 설치합니다. 이들 단계는 Helm 버전을 사용하여 작성되었습니다 `3.18.6`. Amazon EKS 지원 Kubernetes 버전과의 호환성을 보장하려면 Helm 버전 3.9 이상을 사용하세요. 자세한 정보는 [Helm 설치](https://helm.sh/docs/intro/install/)를 참조하세요.

1. 다음 단계에 따라 테스트 Helm 차트를 생성합니다. 자세한 내용은 [Helm Docs - 시작하기](https://helm.sh/docs/chart_template_guide/getting_started/)를 참조하세요.

   1. `helm-test-chart` 라는 Helm 차트를 만들고 `templates` 디렉토리의 콘텐츠를 지웁니다.

      ```
      helm create helm-test-chart
      rm -rf ./helm-test-chart/templates/*
      ```

   1. `templates` 폴더에 `ConfigMap`을 생성합니다.

      ```
      cd helm-test-chart/templates
      cat <<EOF > configmap.yaml
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: helm-test-chart-configmap
      data:
        myvalue: "Hello World"
      EOF
      ```

1. 차트를 패키징합니다. 출력에는 Helm 차트를 푸시할 때 사용하는 패키지 차트의 파일 이름이 포함됩니다.

   ```
   cd ../..
   helm package helm-test-chart
   ```

   출력

   ```
   Successfully packaged chart and saved it to: /Users/username/helm-test-chart-0.1.0.tgz
   ```

1. Helm 차트를 저장할 리포지토리를 생성합니다. 리포지토리 이름은 2단계에서 Helm 차트를 생성할 때 사용한 이름과 일치해야 합니다. 자세한 내용은 [이미지를 저장할 Amazon ECR 프라이빗 리포지토리 생성](repository-create.md) 단원을 참조하십시오.

   ```
   aws ecr create-repository \
        --repository-name helm-test-chart \
        --region us-west-2
   ```

1. Helm 차트를 푸시하려는 Amazon ECR 레지스트리에 대해 Helm 클라이언트를 인증합니다. 인증 토큰은 사용되는 레지스트리마다 필요하며, 12시간 동안 유효합니다. 자세한 정보는 [Amazon ECR의 프라이빗 레지스트리 인증](registry_auth.md)을 참조하세요.

   ```
   aws ecr get-login-password \
        --region us-west-2 | helm registry login \
        --username AWS \
        --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
   ```

1. **helm push** 명령을 사용하여 Helm 차트를 푸시합니다. 출력에는 Amazon ECR 리포지토리 URI 및 SHA 다이제스트가 포함되어야 합니다.

   ```
   helm push helm-test-chart-0.1.0.tgz oci://aws_account_id.dkr.ecr.region.amazonaws.com/
   ```

1. Helm 차트를 설명하세요.

   ```
   aws ecr describe-images \
        --repository-name helm-test-chart \
        --region us-west-2
   ```

   출력에서 `artifactMediaType` 파라미터가 적절한 아티팩트 유형을 나타내는지 확인합니다.

   ```
   {
       "imageDetails": [
           {
               "registryId": "aws_account_id",
               "repositoryName": "helm-test-chart",
               "imageDigest": "sha256:dd8aebdda7df991a0ffe0b3d6c0cf315fd582cd26f9755a347a52adEXAMPLE",
               "imageTags": [
                   "0.1.0"
               ],
               "imageSizeInBytes": 1620,
               "imagePushedAt": "2021-09-23T11:39:30-05:00",
               "imageManifestMediaType": "application/vnd.oci.image.manifest.v1+json",
               "artifactMediaType": "application/vnd.cncf.helm.config.v1+json"
           }
       ]
   }
   ```

1. (선택 사항) 추가 단계로, Helm `ConfigMap`을 설치하고 Amazon EKS를 시작합니다. 자세한 내용은 [Amazon EKS 클러스터에 Helm 차트 설치](using-helm-charts-eks.md) 단원을 참조하십시오.

# Amazon ECR 프라이빗 리포지토리에서 서명 및 기타 아티팩트 삭제
아티팩트 삭제

ORAS 클라이언트를 사용하여 Amazon ECR 프라이빗 리포지토리에서 서명 및 기타 참조 유형 아티팩트를 나열하고 삭제할 수 있습니다. 서명 및 기타 참조 아티팩트를 삭제하는 것은 이미지를 삭제하는 것과 유사합니다([Amazon ECR에서 이미지 삭제](delete_image.md) 참조). 다음은 아티팩트를 나열하고 서명을 삭제하는 방법입니다.

**ORAS CLI를 사용하여 이미지 아티팩트를 관리하려면**

1. ORAS 클라이언트를 설치하고 구성합니다.

   ORAS 클라이언트 설치 및 구성에 대한 자세한 내용은 ORAS 설명서의 [설치](https://oras.land/docs/installation)를 참조하세요.

1. Amazon ECR 이미지에 사용 가능한 아티팩트를 나열하려면 `oras discover` 다음에 이미지 이름을 입력하여 사용합니다.

   ```
   oras discover 111222333444.dkr.ecr.us-east-1.amazonaws.com/oci:helloworld
   ```

   결과가 다음과 비슷할 것입니다.

   ```
   111222333444.dkr.ecr.us-east-1.amazonaws.com/oci@sha256:88c0c54329bfdc1d94d6f58cd3fcb1226d46f58670f44a8c689cb3c9b37b6925
   └── application/vnd.cncf.notary.signature
       ├── sha256:387c10c1598ee18aae81dcfc86d0d06d116e46461d1c3cda8927e69c48108c42
       └── sha256:6527bcec87adf1d55460666183b9d0968b3cd4e4bc34602d485206a219851171
   ```

1. 이전 예제에서 ORAS CLI를 사용하여 서명을 삭제하려면 다음 명령을 실행합니다.

   ```
   oras manifest delete 111222333444.dkr.ecr.us-east-1.amazonaws.com/oci@sha256:387c10c1598ee18aae81dcfc86d0d06d116e46461d1c3cda8927e69c48108c42
   ```

   결과가 다음과 비슷할 것입니다.

   ```
   Are you sure you want to delete the manifest "111222333444.dkr.ecr.us-east-1.amazonaws.com/oci@sha256:387c10c1598ee18aae81dcfc86d0d06d116e46461d1c3cda8927e69c48108c42" and all tags associated with it? [y/N] y
   ```

1. `y`을 누릅니다. 아티팩트를 삭제해야 합니다.

**아티팩트 삭제 문제를 해결하려면**

방금 표시한 것과 같은 서명 삭제가 실패하면 다음과 유사한 출력이 나타납니다.

```
Error response from registry: failed to delete 111222333444.dkr.ecr.us-east-1.amazonaws.com/oci@sha256:387c10c1598ee18aae81dcfc86d0d06d116e46461d1c3cda8927e69c48108c42:
unsupported: Requested image referenced by manifest list: [sha256:005e2c97a6373e483799fa4ff29ac64a42dd10f08efcc166d6775f9b74943b5b]
```

이 실패는 OCI 1.1 출시 전에 푸시된 이미지를 삭제할 때 발생할 수 있습니다. 오류에서 언급된 것처럼, 이미지를 참조하는 매니페스트를 먼저 삭제해야 이미지를 삭제할 수 있습니다.

1. 삭제하려는 서명과 연결된 매니페스트를 삭제하려면 다음을 입력합니다.

   ```
    oras manifest delete 111222333444.dkr.ecr.us-east-1.amazonaws.com/oci@sha256:005e2c97a6373e483799fa4ff29ac64a42dd10f08efcc166d6775f9b74943b5b
   ```

   결과가 다음과 비슷할 것입니다.

   ```
   Are you sure you want to delete the manifest "sha256:005e2c97a6373e483799fa4ff29ac64a42dd10f08efcc166d6775f9b74943b5b" and all tags associated with it? [y/N] y
   ```

1. `y`을 누릅니다. 매니페스트가 삭제되어야 합니다.

1. 매니페스트가 삭제되면 서명을 삭제할 수 있습니다.

   ```
    oras manifest delete 111222333444.dkr.ecr.us-east-1.amazonaws.com/oci@sha256:387c10c1598ee18aae81dcfc86d0d06d116e46461d1c3cda8927e69c48108c42
   ```

   결과는 다음과 비슷해야 합니다. `y`을 누릅니다.

   ```
   Are you sure you want to delete the manifest "sha256:387c10c1598ee18aae81dcfc86d0d06d116e46461d1c3cda8927e69c48108c42" and all tags associated with it? [y/N] y
   Deleted [registry] 111222333444.dkr.ecr.us-east-1.amazonaws.com/oci@sha256:387c10c1598ee18aae81dcfc86d0d06d116e46461d1c3cda8927e69c48108c42
   ```

1. 서명이 삭제되었는지 확인하려면 다음을 입력합니다.

   ```
   oras discover 111222333444.dkr.ecr.us-east-1.amazonaws.com/oci:helloworld
   ```

   결과가 다음과 비슷할 것입니다.

   ```
   111222333444.dkr.ecr.us-east-1.amazonaws.com/oci@sha256:88c0c54329bfdc1d94d6f58cd3fcb1226d46f58670f44a8c689cb3c9b37b6925
   └── application/vnd.cncf.notary.signature
       └── sha256:6527bcec87adf1d55460666183b9d0968b3cd4e4bc34602d485206a219851171
   ```

# Amazon ECR에서 이미지 세부 정보 보기
이미지 세부 정보 보기

리포지토리로 이미지를 푸시한 후 해당 정보를 볼 수 있습니다. 포함된 세부 정보는 다음과 같습니다.
+ 이미지 URI
+ 이미지 태그
+ 아티팩트 미디어 유형
+ 이미지 매니페스트 유형
+ 스캔 상태
+ 이미지 크기(MB)
+ 이미지가 리포지토리에 푸시된 시간
+ 복제 상태

**이미지 세부 정보를 보려면(AWS Management Console)**

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

1. 탐색 모음에서 이미지를 포함하는 리포지토리가 포함된 리전을 선택합니다.

1. 탐색 창에서 **리포지토리**를 선택합니다.

1. **리포지토리(Repositories)** 페이지에서 보려는 리포지토리를 선택합니다.

1. **리포지토리 : *repository\$1name*** 페이지에서 세부 사항을 볼 이미지를 선택합니다.

# Amazon ECR 프라이빗 리포지토리에서 로컬 환경으로 이미지 가져오기
이미지 가져오기

Amazon ECR에서 사용할 수 있는 Docker 이미지를 실행하려면 **docker pull** 명령을 사용하여 로컬 환경으로 이미지를 가져옵니다. 기본 레지스트리 또는 다른 AWS 계정과 연결된 레지스트리에서이 작업을 수행할 수 있습니다.

Amazon ECS 작업 정의에서 Amazon ECR 이미지를 사용하려면 [Amazon ECS에서 Amazon ECR 이미지 사용](ECR_on_ECS.md) 섹션을 참조하세요.

**중요**  
아카이브된 이미지는 가져올 수 없습니다. 보관된 이미지를 가져오려면 먼저 복원해야 합니다. 이미지 보관 및 복원에 대한 자세한 내용은 섹션을 참조하세요[Amazon ECR에 이미지 보관](archive_restore_image.md).

**중요**  
Amazon ECR의 요구 사항에 따라 사용자가 레지스트리에 대해 인증하고 Amazon ECR 리포지토리에서 이미지를 푸시 또는 풀하기 전에 IAM 정책을 통해 `ecr:GetAuthorizationToken` API에 호출을 할 권한이 있어야 합니다. Amazon ECR은 다양한 수준에서 사용자 액세스를 제어하는 여러 AWS 관리형 정책을 제공합니다. Amazon ECR의 AWS 관리형 정책에 대한 자세한 내용은 섹션을 참조하세요[AWS Amazon Elastic Container Registry에 대한 관리형 정책](security-iam-awsmanpol.md).

**Amazon ECR 리포지토리에서 Docker 이미지를 가져오려면**

1. 이미지를 가져오려는 Amazon ECR 레지스트리에 대해 Docker 클라이언트를 인증합니다. 인증 토큰은 사용되는 레지스트리마다 필요하며, 12시간 동안 유효합니다. 자세한 정보는 [Amazon ECR의 프라이빗 레지스트리 인증](registry_auth.md)을 참조하세요.

1. (선택 사항) 가져올 이미지를 식별합니다.
   + **aws ecr describe-repositories** 명령을 사용하여 레지스트리에 있는 리포지토리 목록을 표시할 수 있습니다.

     ```
     aws ecr describe-repositories
     ```

     위의 레지스트리 예제에는 `amazonlinux` 라는 리포지토리가 있습니다.
   + **aws ecr describe-images** 명령을 사용하여 리포지토리 내에 있는 이미지 목록을 표시할 수 있습니다.

     ```
     aws ecr describe-images --repository-name amazonlinux
     ```

     위의 예제 리포지토리에는 이미지 다이제스트 `latest`과 함께 `2016.09` 및 ` sha256:f1d4ae3f7261a72e98c6ebefe9985cf10a0ea5bd762585a43e0700ed99863807`라고 태그가 지정된 이미지가 있습니다.

1. **docker pull** 명령을 사용하여 이미지를 풀링합니다. 이미지 이름 형식은 태그를 기준으로 가져오는 경우 `registry/repository [:tag]`, 다이제스트를 기준으로 가져오는 경우 `registry /repository[@digest]`입니다.

   ```
   docker pull aws_account_id.dkr.ecr.us-west-2.amazonaws.com/amazonlinux:latest
   ```
**중요**  
`repository-url not found: does not exist or no pull access` 오류가 표시되는 경우 Amazon ECR로 Docker 클라이언트를 인증해야 할 수 있습니다. 자세한 내용은 [Amazon ECR의 프라이빗 레지스트리 인증](registry_auth.md) 단원을 참조하십시오.

# Amazon Linux 컨테이너 이미지 가져오기


Amazon Linux 컨테이너 이미지는 Amazon Linux AMI에 포함된 동일한 소프트웨어 구성 요소로부터 빌드됩니다. Amazon Linux 컨테이너 이미지는 Docker 워크로드의 기본 이미지로 어느 환경에나 사용할 수 있습니다. Amazon EC2의 애플리케이션에 Amazon Linux AMI를 사용하는 경우 Amazon Linux 컨테이너 이미지를 사용하여 애플리케이션을 컨테이너화할 수 있습니다.

로컬 개발 환경에서 Amazon Linux 컨테이너 이미지를 사용한 다음 Amazon ECS를 AWS 사용하여 애플리케이션을 로 푸시할 수 있습니다. 자세한 내용은 [Amazon ECS에서 Amazon ECR 이미지 사용](ECR_on_ECS.md) 단원을 참조하십시오.

Amazon Linux 컨테이너 이미지는 Amazon ECR Public 및 [Docker Hub](https://hub.docker.com/_/amazonlinux/)에서 사용할 수 있습니다. Amazon Linux 컨테이너 이미지 지원에 대해 알아보려면 [AWS 개발자 포럼](https://forums.aws.amazon.com/forum.jspa?forumID=228)으로 이동하세요.

**Amazon ECR Public에서 Amazon Linux 컨테이너 이미지를 가져오려면**

1. Docker 클라이언트를 Amazon Linux Public 레지스트리에 인증합니다. 인증 토큰은 12시간 동안 유효합니다. 자세한 내용은 [Amazon ECR의 프라이빗 레지스트리 인증](registry_auth.md) 단원을 참조하십시오.
**참고**  
**ecr-public** 명령은 버전 `1.18.1.187` 이상의 AWS CLI 에서 사용할 수 있지만, 최신 버전의 AWS CLI를 사용하는 것이 좋습니다. 자세한 내용은 *AWS Command Line Interface 사용자 가이드*에서 [AWS Command Line Interface설치](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)를 참조하세요.

   ```
   aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
   ```

   출력값은 다음과 같습니다.

   ```
   Login succeeded
   ```

1. **docker pull** 명령을 사용하여 Amazon Linux 컨테이너 이미지를 가져옵니다. Amazon ECR Public Gallery에서 Amazon Linux 컨테이너 이미지를 보려면 [Amazon ECR Public Gallery - amazonlinux](https://gallery.ecr.aws/amazonlinux/amazonlinux)를 참조하세요.

   ```
   docker pull public.ecr.aws/amazonlinux/amazonlinux:latest
   ```

1. (선택 사항) 로컬에서 컨테이너를 실행합니다.

   ```
   docker run -it public.ecr.aws/amazonlinux/amazonlinux /bin/bash
   ```

**Docker Hub에서 Amazon Linux 컨테이너 이미지를 가져오려면**

1. **docker pull** 명령을 사용하여 Amazon Linux 컨테이너 이미지를 가져옵니다.

   ```
   docker pull amazonlinux
   ```

1. (선택 사항) 로컬에서 컨테이너를 실행합니다.

   ```
   docker run -it amazonlinux:latest /bin/bash
   ```

# Amazon ECR에서 이미지 삭제
이미지 삭제

이미지 사용을 마치면 리포지토리에서 이를 삭제할 수 있습니다. 리포지토리 사용을 마치면 전체 리포지토리 및 리포지토리 내부의 이미지를 모두 삭제할 수 있습니다. 자세한 정보는 [Amazon ECR에서 프라이빗 리포지토리 삭제](repository-delete.md)을 참조하세요.

이미지를 수동으로 삭제하는 대신 리포지토리에 있는 이미지의 수명 주기 관리를 보다 효과적으로 제어할 수 있는 저장소 수명 주기 정책을 만들 수 있습니다. 수명 주기 정책은 이 프로세스를 자동화합니다. 자세한 내용은 [Amazon ECR의 수명 주기 정책을 사용하여 이미지 정리 자동화](LifecyclePolicies.md) 단원을 참조하십시오.

**참고**  
 리포지토리에 이미지가 혼합되어 있고 일부 이미지가 Amazon ECR이 OCI v1.1을 지원하기 전에 푸시된 경우 일부 서명에 해당 이미지를 가리키는 이미지 인덱스 또는 매니페스트 목록이 있습니다. 따라서 OCI v1.1 이전 이미지를 삭제할 때 해당 이미지를 참조하는 매니페스트 목록을 수동으로 삭제하여 아티팩트를 삭제해야 할 수 있습니다.

**이미지를 삭제하려면(AWS Management Console)**

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

1. 탐색 모음에서 삭제할 이미지가 들어 있는 리전을 선택합니다.

1. 탐색 창에서 **리포지토리**를 선택합니다.

1. **리포지토리(Repositories)** 페이지에서 삭제할 이미지가 들어 있는 리포지토리를 선택합니다.

1. **리포지토리: *repository\$1name*** 페이지에서 삭제할 이미지 왼쪽의 상자를 선택하고 ** 삭제**를 선택합니다.

1. **이미지 삭제(Delete image(s))** 대화 상자에서 삭제할 이미지가 선택되었는지 확인한 후 **삭제(Delete)**를 선택합니다.

**이미지를 삭제하려면(AWS CLI)**

1. 리포지토리에 있는 이미지를 나열합니다. 태그가 지정된 이미지는 이미지 다이제스트와 관련 태그 목록을 모두 갖습니다. 태그가 지정되지 않은 이미지에는 이미지 다이제스트만 있습니다.

   ```
   aws ecr list-images \
        --repository-name my-repo
   ```

1. (선택 사항) 삭제하려는 이미지와 연결된 태그를 지정하여 이미지에 대해 원치 않는 태그를 삭제합니다. 이미지에서 마지막 태그를 삭제하면 이미지도 삭제됩니다.

   ```
   aws ecr batch-delete-image \
        --repository-name my-repo \
        --image-ids imageTag=tag1 imageTag=tag2
   ```

1. 이미지 다이제스트를 지정하여 태그가 지정되었거나 지정되지 않은 이미지를 삭제합니다. 다이제스트를 참조하여 이미지를 삭제하면 이미지와 이미지의 태그 모두가 삭제됩니다.

   ```
   aws ecr batch-delete-image \
        --repository-name my-repo \
        --image-ids imageDigest=sha256:4f70ef7a4d29e8c0c302b13e25962d8f7a0bd304EXAMPLE
   ```

   여러 이미지를 삭제하려면 요청에서 여러 이미지 태그 또는 이미지 다이제스트를 지정할 수 있습니다.

   ```
   aws ecr batch-delete-image \
        --repository-name my-repo \
        --image-ids imageDigest=sha256:4f70ef7a4d29e8c0c302b13e25962d8f7a0bd304EXAMPLE imageDigest=sha256:f5t0e245ssffc302b13e25962d8f7a0bd304EXAMPLE
   ```

# Amazon ECR에 이미지 보관
이미지 보관

## ECR 아카이브 스토리지 클래스란 무엇입니까?


Amazon ECR 아카이브 스토리지 클래스는 컨테이너 이미지를 위한 저렴한 장기 스토리지를 제공하는 새로운 스토리지 클래스입니다. Amazon ECR은 두 가지 스토리지 클래스를 제공합니다.
+ **ECR 표준 스토리지 클래스** - 정기적으로 액세스하는 활성 이미지의 기본 스토리지 클래스입니다.
+ **ECR 아카이브 스토리지 클래스** - 거의 액세스하지 않지만 규정 준수 또는 장기 참조를 위해 보존해야 하는 이미지의 저비용 스토리지 클래스입니다. 아카이브 스토리지 클래스는 장기 이미지 보존을 위해 표준 스토리지 클래스에 비해 대용량 이미지에 대한 비용을 절감합니다. 자세한 요금 정보는 [Amazon ECR 요금을](https://aws.amazon.com/ecr/pricing/) 참조하세요.

이미지를 아카이브하려면 두 가지 옵션이 있습니다. 먼저 다음을 기반으로 이미지를 자동으로 보관하도록 수명 주기 규칙을 구성할 수 있습니다.
+ 이미지가 푸시된 이후 경과 시간
+ 이미지를 마지막으로 가져온 후 경과한 시간
+ 리포지토리의 이미지 수

지정된 기간 동안 보관된 이미지를 영구적으로 삭제하도록 설정을 구성할 수도 있습니다. 자세한 내용은 [Amazon ECR의 수명 주기 정책을 사용하여 이미지 정리 자동화](LifecyclePolicies.md) 섹션을 참조하세요.

Amazon ECR 콘솔 또는를 사용하여 이미지를 아카이브할 수도 있습니다 AWS CLI. 자세한 내용은 [이미지 보관](archive-image.md) 섹션을 참조하세요.

아카이브된 이미지를 다시 사용해야 하는 경우 ECR Standard 스토리지 클래스로 복원할 수 있습니다. ECR이 20분 이내에 이미지를 복원할 것으로 예상할 수 있습니다. 복원된 이미지는 새로 푸시된 이미지처럼 동작하며 복원이 완료되면 즉시 사용할 수 있습니다. 복원된 이미지에는 스캔, 복제 및 리포지토리 수명 주기 정책이 적용됩니다. 자세한 내용은 [이미지 복원](restore-image.md) 섹션을 참조하세요.

# 이미지 보관
이미지 보관

Amazon ECR 콘솔을 사용하거나 수명 주기 정책을 사용하여 이미지를 수동으로 아카이브 AWS CLI하거나 자동으로 아카이브할 수 있습니다. 이미지가 아카이브된 경우:
+ 이미지가 아카이브 스토리지 클래스로 이동합니다.
+ 보관된 이미지는 가져올 수 없습니다. 보관된 이미지 가져오기 요청은 404 오류와 함께 실패합니다.
+ 이미지를 가져올 수는 없지만 ** describe-images** 명령을 사용하여 설명하거나 **list-images** 명령을 사용하여 나열할 수 있습니다. 이미지 상태는 로 표시됩니다`ARCHIVED`.
+ 보관된 이미지의 최소 저장 기간은 90일입니다. 아카이브에 90일 미만으로 보관된 이미지는 삭제하는 수명 주기 정책을 구성할 수 없습니다. 90일 미만 동안 보관된 이미지를 삭제해야 하는 경우 **batch-delete-image** API를 사용해야 하지만 최소 90일 스토리지 기간에 대한 요금이 부과됩니다.
+ 이미지가 리포지토리 보기의 **아카이브된 이미지** 탭에 나타납니다(이 탭은 리포지토리에 이미지가 하나 이상 아카이브된 경우에만 표시됨).
+ 복원할 이미지를 수동으로 선택하거나 이미지를 리포지토리에 다시 푸시하여 이미지를 활성 이미지로 복원할 수 있습니다.
+ 리포지토리에 아카이브 시간과 같은 기준이 있는 이미지를 삭제하는 수명 주기 정책이 있는 경우 이미지가 삭제됩니다.

------
#### [ AWS Management Console ]

**이미지를 아카이브하려면**

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

1. 탐색 모음에서 아카이브하려는 이미지가 있는 리포지토리가 포함된 리전을 선택합니다.

1. 탐색 창에서 **리포지토리**를 선택합니다.

1. **리포지토리** 페이지에서 아카이브하려는 이미지가 포함된 리포지토리를 선택합니다.

1. 아카이브하려는 이미지를 선택합니다. 이미지 세부 정보가 표시됩니다.

1. 이미지를 아카이브하려면 **아카이브** 버튼을 선택하고 메시지가 표시되면 **확인을** 선택합니다.

1. 리포지토리에 처음 아카이브된 이미지인 경우 새로 **아카이브된 이미지** 탭이 새로 아카이브된 이미지와 함께 나타납니다. 다른 아카이브된 이미지가 있는 경우이 이미지가 해당 탭에 추가됩니다.

------
#### [ AWS CLI ]

**이미지를 아카이브하려면**
+ **update-image-storage-class** 명령을 사용하여 스토리지 클래스를 로 업데이트하여 이미지를 아카이브합니다. `ARCHIVE` 

  ```
  aws ecr update-image-storage-class \
      --repository-name my-repository \
      --image-id imageDigest=sha256:4f70ef7a4d29e8c0c302b13e25962d8f7a0bd304EXAMPLE \
      --target-storage-class ARCHIVE
  ```

------

**수명 주기 정책을 사용하여 이미지를 아카이브하려면**
+ 수명 주기 정책을 사용하여 리포지토리에 대한 아카이브 규칙을 구성하여 이미지를 자동으로 아카이브할 수 있습니다. 수명 주기 정책을 사용하면 다음과 같은 기준에 따라 이미지를 자동으로 아카이브할 수 있습니다.
  + 이미지가 푸시된 이후 경과 시간
  + 이미지를 마지막으로 가져온 후 경과한 시간
  + 활성 상태로 유지할 최대 이미지 수

  지정된 기간 동안 보관된 이미지를 영구적으로 삭제하도록 수명 주기 정책을 구성할 수도 있습니다. 아카이브 작업이 포함된 수명 주기 정책에 대한 자세한 내용과 예제는 섹션을 참조하세요[Amazon ECR의 수명 주기 정책을 사용하여 이미지 정리 자동화](LifecyclePolicies.md).
**참고**  
보관된 이미지의 최소 저장 기간은 90일입니다. 아카이브에 90일 미만으로 보관된 이미지는 삭제하는 수명 주기 정책을 구성할 수 없습니다. 90일 미만 동안 보관된 이미지를 삭제해야 하는 경우 **batch-delete-image** API를 사용해야 하지만 최소 90일 스토리지 기간에 대한 요금이 부과됩니다.

**describe-images** 명령을 사용하여 이미지를 설명하면 아카이브된 이미지`image-status`의는 입니다`ARCHIVED`. 를 기준으로 이미지를 필터링`image-status`하여 아카이브된 이미지만 보거나 활성 이미지만 볼 수 있습니다.

# 이미지 복원
이미지 복원

아카이브된 이미지를 복원하면 ECR Archive 스토리지 클래스에서 ECR Standard 스토리지 클래스로 다시 이동합니다. 복원된 이미지는 표준 스토리지 요금으로 청구됩니다. 복원 프로세스는 새 이미지가 생성될 때 발생하는 유사한 작업을 수행합니다.
+ 복원이 완료되면 이미지를 가져올 수 있습니다. 복원은 일반적으로 최대 20분이 걸리지만 더 빠르게 완료될 수 있습니다.
+ 리포지토리에 대해 푸시 시 스캔이 활성화된 경우 복원된 이미지가 스캔됩니다. 이미지가 아카이브되기 전의 이전 스캔 결과는 사용할 수 없습니다.
+ 리포지토리에 복제가 구성된 경우 복원 시 복제가 활성화된 경우 복원된 이미지가 복제됩니다.
+ 복원된 이미지가 활성 이미지 목록에 나타납니다.

이미지를 복원하는 데는 일반적으로 최대 20분이 걸리지만 더 빠르게 완료될 수 있습니다. 복원 프로세스 중에 이미지는 아카이브된 상태로 유지되며 복원이 완료될 때까지 가져올 수 없습니다.

------
#### [ AWS Management Console ]

**아카이브된 이미지를 복원하려면**

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

1. 탐색 모음에서 복원하려는 아카이브된 이미지가 있는 리포지토리가 포함된 리전을 선택합니다.

1. 탐색 창에서 **리포지토리**를 선택합니다.

1. **리포지토**리 페이지에서 아카이브된 이미지가 포함된 리포지토리를 선택합니다.

1. **보관된 이미지** 탭을 선택합니다.

1. 복원하려는 아카이브된 이미지를 선택합니다.

1. **복원**을 선택하고 복원 작업을 확인합니다.

1. 복원이 완료될 때까지 기다립니다. 복원이 완료되면 이미지가 활성 이미지 목록에 표시됩니다.

------
#### [ AWS CLI ]

**아카이브된 이미지를 복원하려면**
+ **update-image-storage-class** 명령을 사용하여 스토리지 클래스를 로 업데이트하여 아카이브된 이미지를 복원합니다. `STANDARD` 

  ```
  aws ecr update-image-storage-class \
      --repository-name my-repository \
      --image-id imageDigest=sha256:4f70ef7a4d29e8c0c302b13e25962d8f7a0bd304EXAMPLE \
      --target-storage-class STANDARD
  ```

------

**describe-images** 명령을 사용하여 이미지를 설명하면 복원 중인 이미지`image-status`의는 입니다`ACTIVATING`. 값을 `image-status` 사용하여 로 이미지를 필터링`ACTIVATING`하여 현재 복원 중인 이미지를 볼 수 있습니다.

아카이브된 이미지를 복원하는 다른 방법은 이미지를 리포지토리에 다시 푸시하는 것입니다. 현재 아카이브된 이미지를 푸시하면 해당 이미지가 즉시 복원되고 아카이브에서 제거됩니다.

# Amazon ECR에서 이미지 태그 다시 지정
이미지에 태그 다시 지정

Docker Image Manifest V2 Schema 2 이미지를 사용하면 **put-image** 명령의 `--image-tag` 옵션을 사용하여 기존 이미지에 태그를 다시 지정할 수 있습니다. Docker를 사용하여 이미지를 가져오거나 푸시하지 않고도 태그를 다시 지정할 수 있습니다. 크기가 큰 이미지의 경우 이렇게 하면 이미지에 태그를 다시 지정하는 데 드는 시간과 네트워크 대역폭을 크게 절약할 수 있습니다.

## 이미지에 태그를 다시 지정하려면(AWS CLI)


**를 사용하여 이미지에 태그를 다시 지정하려면 AWS CLI**

1. **batch-get-image** 명령을 사용하여 태그를 다시 지정할 이미지에 대한 이미지 매니페스트를 가져와 파일에 작성합니다. 이 예제에서는 리포지토리에서 *최신* 태그가 있는 이미지의 매니페스트, *amazonlinux*가 *MANIFEST*라는 이름의 환경 변수에 작성됩니다.

   ```
   MANIFEST=$(aws ecr batch-get-image --repository-name amazonlinux --image-ids imageTag=latest --output text --query 'images[].imageManifest')
   ```

1. **put-image** 명령의 `--image-tag` 옵션을 사용하여 새로운 태그가 지정된 이미지 매니페스트를 Amazon ECR에 넣습니다. 이 예에서는 이미지가 *2017.03*로 태그 지정되어 있습니다.
**참고**  
의 버전에서 `--image-tag` 옵션을 사용할 수 없는 경우 최신 버전으로 AWS CLI업그레이드합니다. 자세한 내용은 *AWS Command Line Interface 사용 설명서*의 [설치 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)를 참조하세요.

   ```
   aws ecr put-image --repository-name amazonlinux --image-tag 2017.03 --image-manifest "$MANIFEST"
   ```

1. 새로운 이미지 태그가 이미지에 연결되어 있는지 확인합니다. 아래의 출력에서 이미지에 태그 `latest`와 ` 2017.03`가 있습니다.

   ```
   aws ecr describe-images --repository-name amazonlinux
   ```

   출력값은 다음과 같습니다.

   ```
   {
       "imageDetails": [
           {
               "imageSizeInBytes": 98755613,
               "imageDigest": "sha256:8d00af8f076eb15a33019c2a3e7f1f655375681c4e5be157a26EXAMPLE",
               "imageTags": [
                   "latest",
                   "2017.03"
               ],
               "registryId": "aws_account_id",
               "repositoryName": "amazonlinux",
               "imagePushedAt": 1499287667.0
           }
       ]
   }
   ```

## 이미지에 태그를 다시 지정하려면(AWS Tools for Windows PowerShell)


**를 사용하여 이미지에 태그를 다시 지정하려면 AWS Tools for Windows PowerShell**

1. **Get-ECRImageBatch** **cmdlet**을 사용하여 태그를 다시 지정할 이미지의 설명을 가져온 다음 이를 환경 변수에 씁니다. 이 예제에서는 리포지토리 *amazonlinux*의 * 최신* 태그가 있는 이미지가 환경 변수 *\$1Image*에 기록됩니다.
**참고**  
시스템에서 **Get-ECRImageBatch** ** cmdlet**을 사용할 수 없는 경우, *AWS Tools for PowerShell 사용 설명서*의 [AWS Tools for Windows PowerShell설정](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html)을 참조하세요.

   ```
   $Image = Get-ECRImageBatch -ImageId @{ imageTag="latest" } -RepositoryName amazonlinux
   ```

1. 이미지의 매니페스트를 *\$1Manifest* 환경 변수에 씁니다.

   ```
   $Manifest = $Image.Images[0].ImageManifest
   ```

1. **Write-ECRImage** ** cmdlet**의 `-ImageTag` 옵션을 사용하여 이미지 매니페스트를 새로운 태그와 Amazon ECR에 넣습니다. 이 예에서는 이미지가 *2017.09*로 태그 지정되어 있습니다.

   ```
   Write-ECRImage -RepositoryName amazonlinux -ImageManifest $Manifest -ImageTag 2017.09
   ```

1. 새로운 이미지 태그가 이미지에 연결되어 있는지 확인합니다. 아래의 출력에서 이미지에 태그 `latest`와 ` 2017.09`가 있습니다.

   ```
   Get-ECRImage -RepositoryName amazonlinux
   ```

   출력값은 다음과 같습니다.

   ```
   ImageDigest                                                             ImageTag
   -----------                                                             --------
   sha256:359b948ea8866817e94765822787cd482279eed0c17bc674a7707f4256d5d497 latest
   sha256:359b948ea8866817e94765822787cd482279eed0c17bc674a7707f4256d5d497 2017.09
   ```

# Amazon ECR에서 이미지 태그를 덮어쓰지 않도록 방지
이미지 태그를 덮어쓰지 않도록 방지

리포지토리에서 태그 불변성을 켜 이미지 태그 덮어쓰기를 방지할 수 있습니다. 태그 불변성를 켠 후 리포지토리에 이미 존재하는 태그가 지정된 이미지를 푸시하면 ` ImageTagAlreadyExistsException` 오류가 반환됩니다. 태그 불변성은 모든 태그에 영향을 미칩니다. 일부 태그는 변경 불가로 지정하고 다른 태그는 변경 가능하도록 지정할 수 없습니다.

 AWS Management Console 및 AWS CLI 도구를 사용하여 새 리포지토리 또는 기존 리포지토리의 이미지 태그 변경 가능성을 설정할 수 있습니다. 콘솔 단계를 사용하여 리포지토리를 생성하려면 [이미지를 저장할 Amazon ECR 프라이빗 리포지토리 생성](repository-create.md) 섹션을 참조하세요.

## 이미지 태그 변경 가능성 설정(AWS Management Console)


**이미지 태그 변경 가능성을 설정하려면**

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

1. 탐색 모음에서 편집할 리포지토리가 포함된 리전을 선택합니다.

1. 탐색 창의 **프라이빗 레지스트리**에서 **리포지토리**를 선택합니다.

   **리포지토**리가 표시되지 않으면 **프라이빗 레지스트리**를 선택하여 메뉴를 확장한 다음 **리포지토리**를 선택합니다.

1. **프라이빗 리포지토리** 페이지에서 이미지 태그 변경 가능성 설정을 원하는 리포지토리 이름 앞에 있는 라디오 버튼을 선택합니다.

1. **작업**을 선택한 다음 **편집**에서 **리포지토리**를 선택합니다.

1. **이미지 태그 변경 가능성)**에서 다음과 같은 리포지토리 태그 변경 가능성 설정 중 하나를 선택합니다.
   + **변경 가능** - 이미지 태그를 덮어쓰려면 이 옵션을 선택합니다. Amazon ECR이 캐시된 이미지를 업데이트할 수 있도록 풀 스루 캐시 작업을 사용하는 리포지토리에 권장됩니다. 또한, 일부 변경 가능 태그에 대한 태그 업데이트를 비활성화하려면 **변경 가능 태그 제외** 텍스트 상자에 태그 이름을 입력하거나 유사한 여러 태그를 매칭하는 와일드카드(\$1)를 사용합니다.
   + **변경 불가능** - 이미지 태그를 덮어쓰는 것을 방지하려면 이 옵션을 선택합니다. 선택한 옵션은 기존 태그가 있는 이미지를 푸시할 때 리포지토리의 모든 태그와 제외 항목에 적용됩니다. 기존 태그가 있는 이미지를 푸시하려고 하면 Amazon ECR이 `ImageTagAlreadyExistsException`을 반환합니다. 또한, 일부 변경 불가능 태그에 대한 태그 업데이트를 활성화하려면 **변경 불가능 태그 제외** 텍스트 상자에 태그 이름을 입력하거나 유사한 여러 태그를 매칭하는 와일드카드(\$1)를 사용합니다.

1. **이미지 스캔 설정(Image scan settings)**의 경우 기본 스캔을 위해 리포지토리 수준에서 스캔 설정을 지정할 수 있지만 프라이빗 레지스트리 수준에서 스캔 구성을 지정하는 것이 가장 좋습니다. 프라이빗 레지스트리에서 스캔 설정을 지정하면 고급 스캔 또는 기본 스캔을 사용하고 필터를 정의하여 스캔할 리포지토리를 지정할 수 있습니다. 자세한 내용은 [이미지에서 Amazon ECR의 소프트웨어 취약성 스캔](image-scanning.md) 단원을 참조하십시오.

1. **암호화 설정(Encryption settings)**의 경우 리포지토리가 생성되면 리포지토리에 대한 암호화 설정을 변경할 수 없으므로 이 항목은 보기 전용 필드입니다.

1. **저장(Save)**을 선택하여 리포지토리 설정을 업데이트합니다.

## 이미지 태그 변경 가능성 설정(AWS CLI)


**변경 불가능 태그로 구성된 리포지토리를 생성하려면**

다음 명령 중 하나를 사용하여 변경 불가능 태그로 구성된 새 이미지 리포지토리를 생성합니다.
+ 이미지 태그 변경 가능성과 함께 [create-repository](https://docs.aws.amazon.com/cli/latest/reference/ecr/create-repository.html)(AWS CLI)

  ```
  aws ecr create-repository --repository-name name --image-tag-mutability IMMUTABLE --region us-east-2
  ```
+ 이미지 태그 변경성 제외 필터와 함께 [create-repository](https://docs.aws.amazon.com/cli/latest/reference/ecr/create-repository.html)(AWS CLI)

  ```
  aws ecr create-repository --repository-name name --image-tag-mutability IMMUTABLE_WITH_EXCLUSION --image-tag-mutability-exclusion-filters filterType=WILDCARD,filter=filter-text --region us-east-2
  ```
+ 이미지 태그 변경 가능성과 함께 [New-ECRRepository](https://docs.aws.amazon.com/powershell/latest/reference/items/New-ECRRepository.html)(AWS Tools for Windows PowerShell)

  ```
  New-ECRRepository -RepositoryName name -ImageTagMutability IMMUTABLE -Region us-east-2 -Force
  ```
+ 이미지 태그 변경성 제외 필터와 함께 [New-ECRRepository](https://docs.aws.amazon.com/powershell/latest/reference/items/New-ECRRepository.html)(AWS Tools for Windows PowerShell)

  ```
  New-ECRRepository -RepositoryName name -ImageTagMutability IMMUTABLE_WITH_EXCLUSION -ImageTagMutabilityExclusionFilter @{FilterType=WILDCARD Filter=filter-text} -Region us-east-2 -Force
  ```

**리포지토리에 대해 이미지 태그 변경 가능성 설정을 업데이트하려면**

다음 명령 중 하나를 사용하여 기존 리포지토리의 이미지 태그 변경 가능성 설정을 업데이트합니다.
+ 이미지 태그[ put-image-tag-mutability](https://docs.aws.amazon.com/cli/latest/reference/ecr/put-image-tag-mutability.html)mutability(AWS CLI)

  ```
  aws ecr put-image-tag-mutability --repository-name name --image-tag-mutability IMMUTABLE --region us-east-2
  ```
+ [ put-image-tag-mutability](https://docs.aws.amazon.com/cli/latest/reference/ecr/put-image-tag-mutability.html)(AWS CLI) 및 이미지 태그 변경 가능성 제외 필터

  ```
  aws ecr put-image-tag-mutability --repository-name name --image-tag-mutability IMMUTABLE_WITH_EXCLUSION --image-tag-mutability-exclusion-filters filterType=WILDCARD,filter=latest --region us-east-2
  ```
+ 이미지[ 태그 변경 가능성이 있는 Write-ECRImageTagMutability](https://docs.aws.amazon.com/powershell/latest/reference/items/Write-ECRImageTagMutability.html)(AWS Tools for Windows PowerShell)

  ```
  Write-ECRImageTagMutability -RepositoryName name -ImageTagMutability IMMUTABLE -Region us-east-2 -Force
  ```
+ 이미지[ 태그 변경성 제외 필터를 사용한 Write-ECRImageTagMutability](https://docs.aws.amazon.com/powershell/latest/reference/items/Write-ECRImageTagMutability.html)(AWS Tools for Windows PowerShell)

  ```
  Write-ECRImageTagMutability -RepositoryName name -ImageTagMutability IMMUTABLE_WITH_EXCLUSION -ImageTagMutabilityExclusionFilter @{FilterType=WILDCARD Filter=latest}
  ```

# Amazon ECR에서 지원하는 컨테이너 이미지 매니페스트 형식
컨테이너 이미지 매니페스트 형식

Amazon ECR는 다음과 같은 컨테이너 이미지 매니페스트 형식을 지원합니다.
+ Docker 이미지 매니페스트 V2 스키마 1(Docker 버전 1.9 이하에서 사용됨)
+ 도커 이미지 매니페스트 V2 스키마 2(Docker 버전 1.10 이상에서 사용됨)
+ Open Container Initiative(OCI) 사양(v1.0 및 v1.1)

도커 이미지 매니페스트 V2 스키마 2를 지원하면 다음 기능을 사용할 수 있습니다.
+ 단일 이미지에 여러 개의 태그 사용 기능입니다.
+ Windows 컨테이너 이미지 저장 지원.

## Amazon ECR 이미지 매니페스트 전환


Amazon ECR에 이미지를 푸시하고 가져오면, 컨테이너 엔진 클라이언트(예: Docker)가 레지스트리와 통신하여 이미지에 사용할 레지스트리 및 클라이언트가 인식할 수 있는 매니페스트 형식으로 일치시킵니다.

Docker 버전 1.9 이하를 사용하여 Amazon ECR에 이미지를 푸시하는 경우, Docker 이미지 매니페스트 V2 스키마 1 형식으로 이미지 매니페스트 형식이 저장됩니다. Docker 버전 1.10 이상을 사용하여 Amazon ECR에 이미지를 푸시하는 경우, Docker 이미지 매니페스트 V2 스키마 2 형식으로 이미지 매니페스트 형식이 저장됩니다.

*태그*로 Amazon ECR에서 이미지를 가져오는 경우 Amazon ECR은 리포지토리에 저장된 이미지 매니페스트 형식을 반환합니다. 해당 형식을 클라이언트에서 인식할 수 있는 경우에만 형식이 반환됩니다. 저장된 이미지 매니페스트 형식을 클라이언트에서 인식하지 못하면 Amazon ECR은 이미지 매니페스트를 클라이언트에서 인식하는 형식으로 변환합니다. 예를 들어 Docker 1.9 클라이언트는 Docker 이미지 매니페스트 V2 Schema 2로 저장되는 이미지 매니페스트를 요청하고, Amazon ECR은 Docker 이미지 매니페스트 V2 스키마 1 형식으로 매니페스트를 반환합니다. 다음 표에서는 *태그로* 이미지를 가져올 때 Amazon ECR에서 지원하는 사용 가능한 변환에 대해 설명합니다.


| 클라이언트에서 요청하는 스키마 | V2 스키마 1 형식으로 ECR에 푸시함 | V2 스키마 2 형식으로 ECR에 푸시함 | OCI 형식으로 ECR에 푸시함 | 
| --- | --- | --- | --- | 
| V2 스키마 1 | 변환이 필요하지 않음 | V2 스키마 1 형식으로 변환됨 | 변환 불가능 | 
| V2 스키마 2 | 변환 불가능, 클라이언트가 V2 스키마 1로 폴백됨 | 변환이 필요하지 않음 | V2 스키마 2 형식으로 변환됨 | 
| OCI | 변환 불가능 | OCI 형식으로 변환됨 | 변환이 필요하지 않음 | 

**중요**  
이미지를 *다이제스트로* 가져오는 경우, 사용할 수 있는 변환이 없습니다. 클라이언트는 Amazon ECR에 저장된 이미지 매니페스트 형식을 이해하고 있어야 합니다. 사용자가 Docker 1.9 이하 클라이언트에서 다이제스트를 기준으로 Docker 이미지 매니페스트 V2 스키마 2를 요청하는 경우 이미지 가져오기가 실패합니다. 자세한 내용은 Docker 설명서의 [레지스트리 호환성](https://docs.docker.com/registry/compatibility/)을 참조하세요.  
이 예에서 *태그로* 동일한 이미지를 요청하는 경우, Amazon ECR에서 클라이언트에서 인식할 수 있는 형식으로 이미지 매니페스트를 변환합니다. 그리고 이미지 가져오기가 성공합니다.

# Amazon ECS에서 Amazon ECR 이미지 사용


Amazon ECR 프라이빗 리포지토리를 사용하여 Amazon ECS 태스크에서 가져올 수 있는 컨테이너 이미지 및 아티팩트를 호스팅할 수 있습니다. 이 항목이 작동하려면 Amazon ECS 또는 Fargate, 컨테이너 에이전트에 `ecr:BatchGetImage`, `ecr:GetDownloadUrlForLayer` 및 `ecr:GetAuthorizationToken` API를 만들 수 있는 권한이 있어야 합니다.

## 필수 IAM 권한


다음 표에는 Amazon ECR 프라이빗 리포지토리에서 태스크를 가져오는 데 필요한 권한을 제공하는 각 시작 유형에 사용할 IAM 역할이 표시되어 있습니다. Amazon ECS는 필요한 권한이 포함된 관리형 IAM 정책을 제공합니다.


****  

| 시작 유형 | IAM 역할 | AWS 관리형 IAM 정책 | 
| --- | --- | --- | 
| Amazon EC2 인스턴스의 Amazon ECS |  Amazon ECS 클러스터에 등록된 Amazon EC2 인스턴스와 연결된 컨테이너 인스턴스 IAM 역할을 사용합니다. 자세한 내용을 알아보려면 *Amazon Elastic Container Service 개발자 안내서*의 [컨테이너 인스턴스 IAM 역할](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html)을 참조하세요.  |  `AmazonEC2ContainerServiceforEC2Role` 자세한 내용은 *Amazon Elastic Container Service 개발자 안내서*의 [https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonEC2ContainerServiceforEC2Role](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonEC2ContainerServiceforEC2Role) 섹션을 참조하세요.  | 
|  Fargate의 Amazon ECS  |  Amazon ECS 태스크 정의에서 참조하는 태스크 실행 IAM 역할을 사용하세요. 자세한 내용을 알아보려면 *Amazon Elastic Container Service 개발자 안내서*의 [태스크 실행 IAM 역할](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html)을 참조하세요.  |  `AmazonECSTaskExecutionRolePolicy` 자세한 내용은 *Amazon Elastic Container Service 개발자 안내서*의 [https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonECSTaskExecutionRolePolicy](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonECSTaskExecutionRolePolicy) 섹션을 참조하세요.  | 
|  외부 인스턴스의 Amazon ECS  |  Amazon ECS 클러스터에 등록된 온프레미스 서버 또는 가상 머신(VM)과 연결된 컨테이너 인스턴스 IAM 역할을 사용하세요. 자세한 내용을 알아보려면 *Amazon Elastic Container Service 개발자 안내서*의 [컨테이너 인스턴스 Amazon ECS 역할](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html)을 참조하세요.  |  `AmazonEC2ContainerServiceforEC2Role` 자세한 내용은 *Amazon Elastic Container Service 개발자 안내서*의 [https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonEC2ContainerServiceforEC2Role](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonEC2ContainerServiceforEC2Role) 섹션을 참조하세요.  | 

**중요**  
 AWS 관리형 IAM 정책에는 사용에 필요하지 않을 수 있는 추가 권한이 포함되어 있습니다. 이 경우 이 항목들은 Amazon ECR 프라이빗 리포지토리에서 가져오는 데 필요한 최소 권한입니다.  

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer",
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        }
    ]
}
```

## Amazon ECS 태스크 정의에서 Amazon ECR 이미지 지정
태스크 정의에서 Amazon ECR 이미지 지정

Amazon ECS 태스크 정의를 만들 때 Amazon ECR 프라이빗 리포지토리에서 호스팅되는 컨테이너 이미지를 지정할 수 있습니다. 태스크 정의에서 Amazon ECR 이미지에 대해 전체 `registry/repository:tag` 이름 지정을 사용하고 있는지 확인하세요. 예를 들어 `aws_account_id.dkr.ecr.region.amazonaws.com``/my-repository:latest`입니다.

다음 작업 정의 조각은 Amazon ECS 작업 정의의 Amazon ECR에서 호스트되는 컨테이너 이미지를 지정하는 데 사용할 구문을 보여줍니다.

```
{
    "family": "task-definition-name",
    ...
    "containerDefinitions": [
        {
            "name": "container-name",
            "image": "aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:latest",
            ...
        }
    ],
    ...
}
```

# Amazon EKS에서 Amazon ECR 이미지 사용


Amazon EKS에서 Amazon ECR 이미지를 사용할 수 있습니다.

Amazon ECR에서 이미지를 참조할 때는 이미지에 대해 전체 `registry/repository:tag` 이름 지정을 사용해야 합니다. 예: `aws_account_id.dkr.ecr.region.amazonaws.com``/my-repository:latest`

## 필수 IAM 권한


관리형 노드, 자체 관리형 노드 또는에서 호스팅되는 Amazon EKS 워크로드가 있는 경우 다음을 AWS Fargate검토하세요.
+ 관리형 또는 자체 관리형 노드에서 호스팅되는 Amazon EKS 워크로드: Amazon EKS 작업자 노드 IAM 역할(`NodeInstanceRole`)이 필요합니다. Amazon EKS 작업자 노드 IAM 역할에는 Amazon ECR에 대해 다음의 IAM 정책 권한이 포함되어야 합니다.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "ecr:BatchCheckLayerAvailability",
                  "ecr:BatchGetImage",
                  "ecr:GetDownloadUrlForLayer",
                  "ecr:GetAuthorizationToken"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------
**참고**  
[Amazon EKS 시작하기](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)에서 `eksctl` 또는 CloudFormation 템플릿을 사용하여 클러스터 및 작업자 노드 그룹을 생성한 경우 이러한 IAM 권한은 기본적으로 작업자 노드 IAM 역할에 적용됩니다.
+ 호스팅되는 Amazon EKS 워크로드 AWS Fargate: 포드에 프라이빗 Amazon ECR 리포지토리에서 이미지를 가져올 수 있는 권한을 제공하는 Fargate 포드 실행 역할을 사용합니다. 자세한 내용은 [Fargate 포드 실행 역할 만들기](https://docs.aws.amazon.com/eks/latest/userguide/fargate-getting-started.html#fargate-sg-pod-execution-role)를 참조하세요.

# Amazon EKS 클러스터에 Helm 차트 설치
Amazon EKS 클러스터에 Helm 차트 설치

Amazon ECR에서 호스팅되는 Helm 차트를 Amazon EKS 클러스터에 설치할 수 있습니다.

**사전 조건**
+ Helm 클라이언트의 최신 버전을 설치합니다. 이들 단계는 Helm 버전을 사용하여 작성되었습니다 `3.9.0`. 자세한 정보는 [Helm 설치](https://helm.sh/docs/intro/install/)를 참조하세요.
+ 최소한 AWS CLI 의 `1.23.9` 또는`2.6.3` 버전이 컴퓨터에 설치되어 있어야 합니다. 자세한 내용은 [최신 버전의 AWS CLI설치 또는 업데이트](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.
+ Amazon ECR 리포지토리에 Helm 차트를 푸시했습니다. 자세한 내용은 [Amazon ECR 리포지토리에 Helm 차트 푸시](push-oci-artifact.md)을(를) 참조하세요.
+ Amazon EKS로 작업하기 위해 `kubectl`를 구성했습니다. 자세한 내용은 **Amazon EKS 사용 설명서**의 [Amazon EKS의 `kubeconfig`생성](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html)을 참조하세요. 클러스터에 대해 다음 명령이 성공한 경우 적절하게 구성한 것입니다.

  ```
  kubectl get svc
  ```

**Amazon EKS 클러스터에 Helm 차트를 설치하려면**

1. Helm 차트가 호스트되는 Amazon ECR 레지스트리에 Helm 클라이언트를 인증합니다. 인증 토큰은 사용되는 레지스트리마다 필요하며, 12시간 동안 유효합니다. 자세한 내용은 [Amazon ECR의 프라이빗 레지스트리 인증](registry_auth.md) 단원을 참조하십시오.

   ```
   aws ecr get-login-password \
        --region us-west-2 | helm registry login \
        --username AWS \
        --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
   ```

1. 차트를 설치합니다. *helm-test-chart*를 리포지토리로 바꾸고 *0.1.0*을 Helm 차트의 태그로 바꿉니다.

   ```
   helm install ecr-chart-demo oci://aws_account_id.dkr.ecr.region.amazonaws.com/helm-test-chart --version 0.1.0
   ```

   결과가 다음과 비슷할 것입니다.

   ```
   NAME: ecr-chart-demo
   LAST DEPLOYED: Tue May 31 17:38:56 2022
   NAMESPACE: default
   STATUS: deployed
   REVISION: 1
   TEST SUITE: None
   ```

1. 차트 설치를 확인합니다.

   ```
   helm list -n default
   ```

   출력 예시:

   ```
   NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
   ecr-chart-demo  default         1               2022-06-01 15:56:40.128669157 +0000 UTC deployed        helm-test-chart-0.1.0   1.16.0
   ```

1. (선택 사항) 설치된 Helm 차트 `ConfigMap`을 참조하세요.

   ```
   kubectl describe configmap helm-test-chart-configmap
   ```

1. 완료되면 클러스터에서 차트 릴리스를 제거할 수 있습니다.

   ```
   helm uninstall ecr-chart-demo
   ```