AWS ECR no basic auth credentials Error Mac

By | 2019년 10월 17일

맥에서 AWS ECR 이미지를 가져오거나 올릴때 인증을 해야 하는데 어느순간 no basic auth credentials 에러를 리턴하기 시작했다.

보통 아래 명령으로 로그인 후 작업하는데 Linux 서버에서는 잘 되는데 로컬 Mac에서 잘 되지 않아 삽질을 좀 했다. (xxxxxxxxxxxx 는 aws ecr registry id를 넣어준다.)

$(aws ecr get-login --no-include-email --region ap-northeast-2 --profile production --registry-ids xxxxxxxxxxxx)

로그인은 정상적으로 되었다고 메시지가 나오는데 docker image 를 pull 하면 no basic auth credentials 라는 에러를 리턴한다. 물론 이미지도 받아지지 않는다.

이곳 저곳 서치을 하고 정보를 모으고 마침내 원인을 찾았다.

사용자 계정에 .docker/config 안에 인증관련 부분에서 ecr 주소에 https://가 붙지 않아 생기는 문제였다.

cat ~/.docker/config
{
	"auths": {
		"xxxxxxxxxxxx.dkr.ecr.ap-northeast-2.amazonaws.com": {}
	},
	"HttpHeaders": {
		"User-Agent": "Docker-Client/19.03.2 (darwin)"
	},
	"credsStore": "osxkeychain"
}

보면 auths 안에 항목에 ecr의 주소가 있는데 앞에 https:// 가 붙어있지 않다.

{
	"auths": {		
		"https://xxxxxxxxxxx.dkr.ecr.ap-northeast-2.amazonaws.com": {}
	},
	"HttpHeaders": {
		"User-Agent": "Docker-Client/19.03.2 (darwin)"
	},
	"credsStore": "osxkeychain"
}

위 처럼 바꿔주면 정상적으로 잘 된다.

아마도 mac은 aws에 인증된 키를 keychain에 저장해서 사용하는데 keychain에서 확인해 보면 https까지 포함하여 되어 있어서 그런 것 같다.

Keychain 에 저장되어 있는 docker credential

해결은 하였지만 이것때문에 2시간 가량 삽질을 한듯 하다. ㅜㅜ