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 설치