AWS CodeDeploy 배포 에러 해결하기

AWS Codedeploy로 배포를 진행하던 도중 전에는 잘만 진행되었던 배포가 에러가 나는 현상이 발생했다. 기존에 애플리케이션 및 배포 그룹 설정까지 잘 설정해줬기 때문에 이런 일이 전혀 없을 줄 알았는데 갑자기 배포 작업이 "실패당해서" 당황했다.

 

하지만 나도 년차가 쌓여서 그런지, 당황은 뒤로 미뤄두고 좀 더 상세한 에러 로그를 확인하기 위해 세부 정보를 확인해 봤다.  아래와 같은 에러 메시지를 첫 번째로 확인할 수 있었는데 배포 그룹 설정이나 ec2 인스턴스에 특별한 문제는 없어 보였다.

The overall deployment failed because too many individual instances failed deployment, too few healthy instances are available for deployment, or some instances in your deployment group are experiencing problems.

(배포에 실패한 개별 인스턴스가 너무 많거나, 배포에 사용할 수 있는 정상 인스턴스가 너무 적거나, 배포 그룹의 일부 인스턴스에 문제가 발생하여 배포에 실패했다는 의미)

 

그렇다면 좀 더 디테일한 로그를 확인해봐야 한다. 계정 세부 정보 탭 아래에 있는 이벤트 탭의 view event를 클릭하여 이벤트 상세 정보를 확인하였다. DownloadBundle에서 실패가 되었고 오류  코드가 UnknownError...? 뭐지 하고 위에 에러 메시지를 확인하였다.

 

No space left on device - /opt/codedeploy-agent/deployment-root/~.....

딱 봐도 해당 디바이스에 공간이 없다 대충 그런 의미겠지 생각하고 인스턴스로 들어가서 df 명령어로 해당 인스턴스 서버의 총용량을 체킹 해봤다. Size가 10G인데 Used가 10G..? 그래서 Available 0G. 사용 가능한 공간이 없기 때문에 배포가 안 되었던 것이다.

ec2-user@web-11:~$ clear
ec2-user@web-11:~$ df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p1   10G  10G   0G   100% /

 

du -sh 명령어로 특정 폴더의 용량을 확인할 수 있고 나는 app이 구동하고 있는 디렉터리인 /app 및의 용량들을 확인했다. 그리고 예전부터 사용했지만 현재는 사용하지 않는 특정 폴더의 용량이 꽤 많이 차지하고 있는 것을 알게 되어 그 디렉터리를 삭제처리 해 주었다.

ec2-user@web-11:~$ du -sh /app
6G	/app

ec2-user@web-11:~$ du -sh /app/repo
3.5G	/app/repo

ec2-user@web-11:~$ rm -rf /app/repo

 

또한 인스턴스 용량을 총 20G로 10G 증설하였다. 그리고 다시 df -h 명령어를 사용하여 해당 인스턴스에 공간이 충분히 확보되었음을 확인한 후에 재 배포를 진행하니 별 탈 없이 성공한 것을 확인할 수 있었다.

ec2-user@web-11:~$ df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p1   20G  6.8G   14G  34% /