Amazon ECR 프라이빗 레지스트리 인증

Amazon ECR 프라이빗 레지스트리 인증

AWS Management Console, AWS CLI, AWS SDK를 사용해 프라이빗 리포지토리를 생성하고 관리할 수 있습니다. 이러한 방법으로 이미지 나열이나 삭제 같은 일부 작업도 수행할 수 있습니다. 이 클라이언트는 표준 AWS 인증 방법을 사용합니다. Amazon ECR API로 이미지를 push하고 pull할 수 있지만, Docker CLI나 언어별 Docker 라이브러리를 사용하는 경우가 더 많습니다. Docker CLI는 네이티브 IAM 인증 방법을 지원하지 않습니다. Amazon ECR이 Docker push와 pull 요청을 인증하고 권한을 부여하려면 추가 단계가 필요합니다. 다음 섹션에 자세히 설명된 레지스트리 인증 방법을 사용할 수 있습니다.

출처: 문서

본문

Amazon ECR 자격 증명 헬퍼 사용하기 (Using the Amazon ECR credential helper)

Amazon ECR은 Amazon ECR로 이미지를 push하고 pull할 때 Docker 자격 증명을 저장하고 사용하기 쉽게 해주는 Docker 자격 증명 헬퍼를 제공합니다. 설치 및 구성 단계는 Amazon ECR Docker Credential Helper를 참조하세요.

참고

Amazon ECR Docker 자격 증명 헬퍼는 현재 다중 인증(MFA, multi-factor authentication)을 지원하지 않습니다.

권한 부여 토큰 사용하기 (Using an authorization token)

권한 부여 토큰의 권한 범위는 인증 토큰을 가져오는 데 사용된 IAM 보안 주체와 일치합니다. 인증 토큰은 IAM 보안 주체가 접근할 수 있는 모든 Amazon ECR 레지스트리에 접근하는 데 사용되며 12시간 동안 유효합니다. 권한 부여 토큰을 얻으려면 GetAuthorizationToken API 작업을 사용해 사용자 이름 AWS와 인코딩된 비밀번호가 포함된 base64로 인코딩된 권한 부여 토큰을 검색해야 합니다. AWS CLI의 get-login-password 명령은 권한 부여 토큰을 검색하고 디코딩해 간소화하며, 이를 docker login 명령에 파이프하여 인증할 수 있습니다.

get-login-password로 Docker를 Amazon ECR 프라이빗 레지스트리에 인증하기

Docker를 Amazon ECR 레지스트리에 인증하려면 get-login-password 명령으로 aws ecr get-login-password 명령을 실행합니다. 인증 토큰을 docker login 명령에 전달할 때 사용자 이름에 AWS 값을 사용하고 인증하려는 Amazon ECR 레지스트리 URI를 지정합니다. 여러 레지스트리에 인증하려면 각 레지스트리에 대해 명령을 반복해야 합니다.

중요

오류가 발생하면 최신 버전의 AWS CLI를 설치하거나 업그레이드하세요. 자세한 내용은 AWS Command Line Interface User Guide의 Installing the AWS Command Line Interface를 참조하세요.

get-login-password (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 (AWS Tools for Windows PowerShell)

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

HTTP API 인증 사용하기 (Using HTTP API authentication)

Amazon ECR은 Docker Registry HTTP API를 지원합니다. 그러나 Amazon ECR은 프라이빗 레지스트리이므로 모든 HTTP 요청에 권한 부여 토큰을 제공해야 합니다. curl의 -H 옵션을 사용해 HTTP 권한 부여 헤더를 추가하고, get-authorization-token AWS CLI 명령이 제공하는 권한 부여 토큰을 전달할 수 있습니다.

Amazon ECR HTTP API로 인증하기

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

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

API에 인증하려면 $TOKEN 변수를 curl의 -H 옵션에 전달합니다. 예를 들어 다음 명령은 Amazon ECR 리포지토리의 이미지 태그를 나열합니다. 자세한 내용은 Docker Registry HTTP API 참조 문서를 참조하세요.

curl -i -H "Authorization: Basic ***" 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"]}

더 알아보기 (Learn more)

  • Amazon ECR 프라이빗 레지스트리
  • Amazon ECR Docker Credential Helper
  • AWS CLI 설치