생성한 도커 이미지를 AWS ECR에 푸시하려할 때 나타날 수 있는 에러다.
% docker push aws_account_id.dkr.ecr.ap-northeast-2.amazonaws.com/repo_name
Using default tag: latest
The push refers to repository [aws_account_id.dkr.ecr.ap-northeast-2.amazonaws.com/repo_name]
2ae400039901: Preparing
960d5ae4ed5f: Preparing
3a17d5628d9c: Preparing
f96c96b0fc77: Preparing
0a8156f1371f: Preparing
167a2b037359: Waiting
dc76478c3f39: Preparing
1d0868567012: Waiting
88afb0b34e7a: Waiting
727bd179078b: Waiting
61f2871f545a: Waiting
no basic auth credentials
ECR 프라이빗 레포지토리에 접근하려할 때 인증을 요구하는 것인데, 이 비밀번호는 aws-cli
에 로그인이 이미 되어있고 필요한 권한이 있다는 가정하에 다음의 명령어를 통해 얻을 수 있다.
aws ecr get-login-password --region ap-northeast-2
단, 이 결과를 그대로 복사해서 사용하는 것은 바람직한 방법이 아니며, 도커 푸시를 할 때 다음의 명령어를 조합하여 사용하면 비밀번호가 노출되는 일 없이 안전하게 사용이 가능하다.
$ aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
Login Succeeded
Logging in with your password grants your terminal complete access to your account.
For better security, log in with a limited-privilege personal access token. Learn more at https://docs.docker.com/go/access-tokens/
혹은 이렇게도 사용이 가능하다.
docker login -u AWS -p $(aws ecr get-login-password --region ap-northeast-2) aws_account_id.dkr.ecr.REGION.amazonaws.com
이제 다시 푸시를 해보자.
% docker push aws_account_id.dkr.ecr.ap-northeast-2.amazonaws.com/repo_name
Using default tag: latest
The push refers to repository [aws_account_id.dkr.ecr.ap-northeast-2.amazonaws.com/repo_name]
2ae4000399xx: Pushed
960d5ae4edxx: Pushed
3a17d5628dxx: Pushed
f96c96b0fcxx: Pushed
0a8156f137xx: Pushed
167a2b0373xx: Pushed
dc76478c3fxx: Pushed
1d08685670xx: Pushed
88afb0b34exx: Pushed
727bd17907xx: Pushed
61f2871f54xx: Pushed
latest: digest: sha256:xxxx size: 2618
참고자료
AWS ECS Guide - Creating a container image
AWS ECR Guide - Using Amazon ECR with the AWS CLI