AWS ECR 생성 관련 오류 및 해결 방법 모음

728x90

오류 CASE 1

입력 상황

 



AWS ECR에서 제공하는 인증 토큰 가져오는 명령어를 그대로 입력했을 때 해당 오류가 발생했다.

오류 로그

 

An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::ACCOUNT_NUMBER:user/MY_USER is not authorized to perform: ecr:GetAuthorizationToken on resource: *

 

원인


두 가지 원인이 있다.


첫 번째 원인

액세스 키로 연결된 사용자에게 AWS ECR 권한이 없음
오류 로그에 나온 대로 사용자의 IAM 권한에 ECR에 대한 GetAuthorizationToken 권한이 설정되어있지 않음

두 번째 원인

사용자가 MFA를 사용해서 접속 보안을 이중으로 설정했기 때문에 AWS CLI를 사용하여 액세스 할 수 없음. 이 경우에도 위와 같은 로그가 발생함

해결책


첫번째 원인에 대한 해결책


IAM에 들어가서 사용자나 사용자가 속한 그룹에 다음 권한을 활성화해준다. 

1. 리포지토리가 프라이빗인 경우 



2. 리포지토리가 퍼블릭인 경우

 



두번째 원인에 대한 해결책


MFA를 삭제하고 새로 액세스키를 생성해준다. 새로 생성한 액세스키를 AWS CLI에 적용해준다. 



AWS CLI에 액세스키와 보안키를 적용하려면 CMD에서 다음 명령어를 입력하고 액세스키와 보안키를 그대로 넣어줘서 새로 설정해준다.

AWS configure



해결책의 문제점 


이렇게 되면 MFA를 사용할 수 없어서 보안 강도가 약해지는 단점이 있다. MFA를 사용하면서도 AWS CLI로 AWS 서비스에 접근하는 방법을 따로 포스팅할 것이다. 

오류 CASE 2


입력 상황

 



AWS ECR에서 제공하는 인증 토큰 가져오는 명령어를 그대로 입력했을 때 해당 오류가 발생했다.

오류 로그

Error saving credentials: error storing credentials - err: exit status 1, out: `status code not OK but 401: {"detail":"Incorrect authentication credentials"}`

 



원인:


Docker push pull 할 때 docker는 자체적으로 .docker/config.json 파일을 업데이트 한다. 이전 docker 작업에서 AWS ECR credential 업데이트가 반영되지 않아서 그럴 수 있다. 이 경우에는 docker에 파일에 있는 config.json을 삭제하고 다시 AWS CLI 명령어를 입력하면 된다.


해결법


명령 프롬프트를 열어서 아래 커맨드를 입력하면 자동으로 ./docker 폴더 경로를 찾아준다.

> cd ~/.docker

 


해당 경로에 있는 config.json을 제거해준다. 제거 커맨드는 다음과 같다. 그냥 GUI 상에서 파일을 삭제해도 된다.

 

rm config.json


다시 AWS CLI 명령어를 실행한다. 정상 작동이 되는 것을 확인 할 수 있다.