【AWS】ECR의 public에 push하는 방법

소개



2020년 12월에 만들어진 공용 리포지토리로 푸시하는 방법입니다.

ECR의 개인 리포지토리에 이미지를 푸시 한 적이 있었지만,
몇 가지 넘어졌기 때문에이 포인트를 올립니다!

· AWS-CLI 버전
· IAM 설정

AWSCLI 버전 업



버전 확인.
$ aws --version
aws-cli/2.0.8 Python/*****

제 경우에는 버전이 오래되고 나중에 지정하는 명령을 인식하지 못했기 때문에,
먼저 버전 업합니다.

공식 문서의 방법으로 버전 업.
macOS에 AWS CLI 버전 2 설치
$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
$ sudo installer -pkg AWSCLIV2.pkg -target /

만약을 위해 확인.
$ aws --version
aws-cli/2.2.31 Python/3.8.8 Darwin/19.6.0 exe/x86_64 prompt/off

ECR의 공용 리포지토리 생성



AWS 콘솔 화면에서 리포지토리를 생성합니다.
서비스에서 Elastic Container Registry를 선택합니다.

아래와 같이 public 탭을 선택하고 리포지토리 작성 버튼을 눌러 작성합니다.



작성 후 리포지토리 별 URI는 태그 지정이나 푸시할 때 사용한다.

푸시 방법



먼저 리포지토리에 인증합니다.

아래 그림과 같이 푸시 명령의 표시 버튼을 누르면 그 방법이 나옵니다.



사용자마다 전용 명령이 표시되므로 그것을 복사하여 실행합니다.
$ aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/(それぞれのエイリアス)

Login Succeeded

로그인 성공하면 Docker Hub나 비공개 리포지토리처럼 image에 태그를 지정합니다. 방법도 거기에 나열되어 있습니다.
$ docker tag blog_app:latest public.ecr.aws/(それぞれのエイリアス)/blog_app:latest
blog_app:latest의 이미지 이름을 바꾸십시오.
태그 이름을 변경하면 푸시합니다.
$ docker push public.ecr.aws/(それぞれのエイリアス)/blog_app:latest

이때 나는 오류가 났다 (ToT)
An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::(アカウントID):user/(ユーザー名) is not authorized to perform: ecr-public:GetAuthorizationToken on resource: *
ecr-public에 대한 권한이 없습니다. AmazonEC2ContainerRegistryFullAccess가 첨부되었습니다.

IAM 설정



IAM의 기존 정책을 살펴보면 AmazonElasticContainerRegistryPublicFullAccess라는 정책이 있었습니다(**)

내 검색 방법이 좋지 않기 때문에이 정책을 찾을 수 없습니다. . .



붉은 선의 녀석입니다!

이제 다시 push 명령하면 무사히 업로드됩니다!

저도 ECR은 약 반년 이상 흔들며 넘어졌습니다.
조사하면 2020년 말에 추가된 기능으로 그 사이에 CLI도 IAM도 업데이트 되었겠지요(^-^;

좋은 웹페이지 즐겨찾기