보조 계정이 Amazon ECR 이미지 리포지토리에서 이미지를 푸시하거나 가져올 수 있도록 하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 2월 16일

보조 계정이 Amazon Elastic Container Registry(Amazon ECR) 이미지 리포지토리에서 이미지를 푸시하거나 가져오도록 허용하려고 합니다.

해결 방법

다른 계정의 Amazon ECR 리포지토리로 이미지를 푸시하거나 Amazon ECR 리포지토리에서 이미지를 가져올 수 있습니다. 우선, 보조 계정이 이미지 리포지토리에 대해 API 호출을 수행하도록 허용하는 정책 생성해야 합니다. 그 다음, 이 토큰을 사용하면 보조 계정에서 생성한 Docker 인증 토큰을 사용하여 기본 계정 리포지토리에 대해 푸시 및 풀 명령을 사용할 수 있습니다.

보조 계정이 이미지 리포지토리에 대해 API 호출을 수행하도록 허용하는 정책 생성

1.    기본 계정에 대한 Amazon ECR 콘솔을 엽니다.

2.    수정하고자 하는 리포지토리의 리포지토리 이름(하이퍼링크 연결)을 선택합니다.

3.    왼쪽 탐색 창의 [Amazon ECR - 리포지토리]에서 [권한]을 선택합니다.

4.    기본 계정 내에서 보조 계정에 대한 리포지토리 정책을 추가하려면 [정책 JSON 편집]을 선택합니다. 코드 편집기에 정책을 입력한 다음 [저장]을 선택합니다.

중요: 정책에 보조 계정의 계정 번호와 해당 계정이 리포지토리에 대해 수행할 수 있는 작업을 포함합니다.

다음 예제 리포지토리 정책은 특정 계정이 이미지를 푸시하고 가져오도록 허용합니다.

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPushPull",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::account-id:root"
            },
            "Action": [
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability",
                "ecr:PutImage",
                "ecr:InitiateLayerUpload",
                "ecr:UploadLayerPart",
                "ecr:CompleteLayerUpload"
            ]
        }
    ]
}

5.    작업 정의에서 Amazon ECS에 사용할 이미지를 설정합니다. 이미지는 기본 계정의 Amazon ECR 리포지토리에서 호스팅됩니다.

보조 계정에서 임시 Docker 인증 토큰을 생성하고 테스트로 푸시 또는 풀 작업 수행

참고: AWS 명령줄 인터페이스(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

보조 계정은 12시간 동안 유효한 필수 임시 인증 토큰을 받기 전에는 리포지토리에서 정책 작업을 수행할 수 없습니다. 해당 토큰을 사용하면 보조 계정이 기본 계정의 저장소에 대해 Docker 푸시 및 풀 명령을 사용할 수 있습니다. get-login-password 명령을 사용하면 인증 토큰을 검색, 디코딩한 후 docker login 명령으로 파이핑하여 인증할 수 있습니다.

참고: 토큰을 가져오는 계정에는 리포지토리를 수정할 수 있는 관련 AWS Identify and Access Management(IAM) API 권한이 있어야 합니다. 예제는 Amazon ECR 관리형 정책을 참조하십시오. Docker 관련 문제를 해결하려면 Docker 데몬에서 디버그 모드를 활성화하십시오. 이 명령은 AWS CLI 버전 2의 최신 버전을 사용하여 지원되거나 AWS CLI 버전 1의 v1.17.10 이상에서 지원됩니다. 자세한 내용은 get-login-password를 참조하세요.

1.    Amazon ECS 외부의 이미지를 푸시하고 가져오는 계정에 대한 Docker 인증 토큰을 생성하려면 다음 명령을 실행합니다. aws_account_id를 기본 계정 ID로 바꾸고 regionID리전 ID로 바꿉니다.

AWS CLI를 사용합니다.

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

AWS Tools for Windows PowerShell 사용:

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

다음과 같은 출력이 표시됩니다.

aws ecr get-login-password --region ap-south-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.ap-south-1.amazonaws.com
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
Login Succeeded

2.    기본 계정으로의 테스트 이미지 풀 또는 푸시 작업을 수행합니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?