

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

# Amazon ECR의 프라이빗 레지스트리 인증
<a name="registry_auth"></a>

 AWS Management Console, AWS CLI또는 AWS SDKs를 사용하여 프라이빗 리포지토리를 생성하고 관리할 수 있습니다. 이러한 방법을 사용하여 이미지에 대해 목록 조회 또는 삭제 같은 일부 작업을 수행할 수도 있습니다. 이러한 클라이언트는 표준 AWS 인증 방법을 사용합니다. Amazon ECR API를 사용하여 이미지를 푸시하고 가져올 수 있지만, Docker CLI 또는 언어별 Docker 라이브러리를 사용하기 쉽습니다.

Docker CLI는 기본 IAM 인증 방법을 지원하지 않습니다. Amazon ECR에서 Docker 푸시 및 풀 요청을 인증하고 승인할 수 있도록 추가 단계를 수행해야 합니다.

다음에 세부적으로 설명된 레지스트리 인증 방법을 사용할 수 있습니다.

## Amazon ECR 자격 증명 도우미 사용
<a name="registry-auth-credential-helper-reg"></a>

Amazon ECR은 Amazon ECR에 대해 이미지를 푸시하고 가져올 때 Docker 자격 증명을 더 쉽게 저장하고 사용할 수 있도록 Docker 자격 증명 헬퍼를 제공합니다. 설치 및 구성 단계는 [Amazon ECR Docker 자격 증명 헬퍼](https://github.com/awslabs/amazon-ecr-credential-helper)를 참조하세요.

**참고**  
Amazon ECR Docker 자격 증명 헬퍼는 현재 멀티 팩터 인증(MFA)을 지원하지 않습니다.

## 권한 부여 토큰 사용
<a name="registry-auth-token"></a>

권한 부여 토큰의 권한 범위는 권한 부여 토큰을 검색하는 데 사용된 IAM 보안 주체의 권한 범위와 일치합니다. 권한 부여 토큰은 IAM 보안 주체가 액세스하고 12시간 동안 유효한 Amazon ECR 레지스트리에 액세스하는 데 사용됩니다. 권한 부여 토큰을 받으려면 [GetAuthorizationToken](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_GetAuthorizationToken.html) API 작업을 사용하여 사용자 이름 `AWS`와 인코딩된 암호를 포함하는 base64로 인코딩된 권한 부여 토큰을 검색해야 합니다. 명령은 AWS CLI ` get-login-password` 인증 토큰을 검색하고 디코딩하여 이를 간소화합니다. 그런 다음이 토큰을 **docker login** 명령에 파이프하여 인증할 수 있습니다.

**get-login을 사용하여 Amazon ECR 프라이빗 레지스트리에 대해 Docker를 인증하려면**
+ 

  get-login-password를 사용하여 Amazon ECR 레지스트리에 대해 Docker를 인증하려면 **aws ecr get-login-password** 명령을 실행합니다. 인증 토큰을 **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)를 참조하세요.
  + [get-login-password](https://docs.aws.amazon.com/cli/latest/reference/ecr/get-login-password.html)(AWS CLI)

    ```
    aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
    ```
  + [Get-ECRLoginCommand](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-ECRLoginCommand.html)(AWS Tools for Windows PowerShell)

    ```
    (Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
    ```

## HTTP API 인증 사용
<a name="registry_auth_http"></a>

Amazon ECR은 [Docker 레지스트리 HTTP API](https://docs.docker.com/registry/spec/api/)를 지원합니다. 그러나 Amazon ECR은 프라이빗 레지스트리이기 때문에 모든 HTTP 요청에 권한 부여 토큰을 제공해야 합니다. 의 `-H` 옵션을 사용하여 HTTP 권한 부여 헤더를 추가**curl**하고 **get-authorization-token** AWS CLI 명령에서 제공하는 권한 부여 토큰을 전달할 수 있습니다.

**Amazon ECR HTTP API로 인증하는 방법**

1. 를 사용하여 권한 부여 토큰을 검색 AWS CLI 하고 환경 변수로 설정합니다.

   ```
   TOKEN=$(aws ecr get-authorization-token --output text --query 'authorizationData[].authorizationToken')
   ```

1. API를 인증하려면 `$TOKEN` 변수를 **curl**의 ` -H` 옵션에 전달합니다. 예를 들어 다음 명령은 Amazon ECR 리포지토리의 이미지 태그를 나열합니다. 자세한 내용은 [도커 레지스트리 HTTP API](https://docs.docker.com/registry/spec/api/) 참조 문서를 살펴보세요.

   ```
   curl -i -H "Authorization: Basic $TOKEN" https://aws_account_id.dkr.ecr.region.amazonaws.com/v2/amazonlinux/tags/list
   ```

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

   ```
   HTTP/1.1 200 OK
   Content-Type: text/plain; charset=utf-8
   Date: Thu, 04 Jan 2018 16:06:59 GMT
   Docker-Distribution-Api-Version: registry/2.0
   Content-Length: 50
   Connection: keep-alive
   
   {"name":"amazonlinux","tags":["2017.09","latest"]}
   ```