[AWS ECR] no basic auth credentials 에러: GitHub Actions 배포 중 발생

19·2024년 10월 16일
0

에러 모음

목록 보기
29/29

배경

Github Actions 로 CI/CD 를 구축하고 있었습니다.
스프링 부트 프로젝트를 Docker Image 로 만들어서 ECR 에 푸시하고, EC2 는 ECR 에서 pull을 하는 방식이었습니다.

EC2 에서 aws-ecr-credential-helper 를 설치해, ECR 접근 시 로그인 과정을 자동화했습니다.

| 배포 스크립트

...
- name: SSH로 EC2에 접속하기
  uses: appleboy/ssh-action@v1.0.3
  with:
    host: ${{ secrets.EC2_HOST }}
    username: ${{ secrets.EC2_USERNAME }}
    key: ${{ secrets.EC2_PRIVATE_KEY }}
    script_stop: true
    script: |
      sudo docker stop test19 || true
      sudo docker rm test19 || true
      sudo docker pull ${{ steps.login-ecr.outputs.registry }}/test19:latest
      sudo docker run -d --name test19 -p 8080:8080 ${{ steps.login-ecr.outputs.registry }}/test19:latest

하지만, ECR 에 업로드된 프로젝트 이미지를 pull 받을 때 no basic auth credentials 에러가 발생했습니다.


내가 한 방법

...
- name: SSH로 EC2에 접속하기
  uses: appleboy/ssh-action@v1.0.3
  with:
    host: ${{ secrets.EC2_HOST }}
    username: ${{ secrets.EC2_USERNAME }}
    key: ${{ secrets.EC2_PRIVATE_KEY }}
    script_stop: true
    script: |
      docker stop test19 || true
      docker rm test19 || true
      docker pull ${{ steps.login-ecr.outputs.registry }}/test19:latest
      docker run -d --name test19 -p 8080:8080 ${{ steps.login-ecr.outputs.registry }}/test19:latest
  • 문제는 script 부분에 'sudo'를 붙인 것이 문제였습니다.
  • 따라서, sudo를 제거하니 정상적으로 배포가 되었습니다.

aws-ecr-credential-helper 깃헙 페이지에 적힌 가이드처럼 /home/ubuntu/.docker/config.json (저는 ubuntu 입니당) 을 생성했지만,
sudo로 실행하면서 관리자 권한인 root 사용자로 전환되었고, root 사용자의 디렉토리엔 /.docker/config.json이 없기 때문에 ECR 인증이 불가했던 것입니다.

따라서, sudo를 제외하고 실행하면 정상적으로 동작하는 것을 확인할 수 있습니다.


그리고, root 사용자의 디렉토리에도 ECR 인증을 위한 파일을 추가하면 실행되는지 확인하기 위해 root 사용자의 디렉토리에 ECR 인증을 위한 작업을 수행하고 Github Actions 를 재실행해보았습니다.

  1. root 사용자 디렉토리/.docker/config.json을 생성했습니다

  2. Github Actions 재실행 (sudo 명령어 포함)

성공적으로 수행되는 것을 확인할 수 있습니당

profile
하나씩 차근차근
post-custom-banner

0개의 댓글