미운 오리 새끼의 우아한 개발자되기

[AWS] 커밋한 파일이 반영 안돼서 CodeDeploy scriptFailed 실패할 때 본문

Cloud/AWS

[AWS] 커밋한 파일이 반영 안돼서 CodeDeploy scriptFailed 실패할 때

Serina_Heo 2022. 4. 27. 16:55

회사에서 AWS Code pipleline을 사용하여 nestjs 애플리케이션을 docker로 ec2에 올리고 있는데

Code deploy에서 ApplicationStop시 scriptFailed가 뜨며 실패했다. 

 

ApplicationStop할 때 dockerStop.sh를 이용하도록 appspec.yml에 hooks에 지정해두었는데

내가 변경한 dockerStop.sh파일이 계속 적용이 안되는것...ㅠㅠㅠ

컨테이너 명을 변경했는데 변경 전 컨테이너명이 적힌 dockerStop.sh을 이용해서 계속 에러가 나며 

배포가 실패했다..

아니...대체 왜...? whyrano..

커밋을 했는데 왜!!!!

 

반나절동안 정말

s3도 비워보고

branch도 바꿔보고 

컨테이너 이미지도 삭제하고

쌩난리를 치다가 

 

혹시 컨테이너 이미지에 캐싱이(?) 되어있는 것인가.. (참고로 도커를 처음 써봤다..ㅠ)

AWS 자체의 버그인건가하며 온갖 가설을 세우다가

발견한 이것..

https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/troubleshooting-deployments.html

 

EC2/온프레미스 배포 문제 해결 - AWS CodeDeploy

Amazon Linux, RHEL 및 Ubuntu Server 인스턴스에서 정리 파일은 /opt/CodeDeploy-agent/deployment-root/deployment-instructions/에 있습니다. Windows Server 인스턴스에서의 위치는 C:\ProgramData\Amazon\CodeDeploy\deployment-instructions

docs.aws.amazon.com

--ignore-application-stop-failures 

이 옵션을 주라는건데 이건 AWS CLI로만 가능한데다가 deployment를 새로 생성해야하는 것 같아서 무서워서 시도를 못해봤는데 정말 단비같이 페이스북 AWS 사용자그룹에 한 분이 이 방법이 아닌 방법으로 해결하는 방법을 써주셨다.

https://www.facebook.com/groups/awskrug/posts/2600613686707306/

 

Facebook에 로그인

메뉴를 열려면 alt + / 키 조합을 누르세요

www.facebook.com

 

ec2에 접속해서 해당 컨테이너가 마지막으로 successfully installed된 것이 있으면 그 이미지의 script를 보고 aws deploy가 진행된다는것....ㅠㅠㅠㅠ그래서 계속 현재의 script를 못보고 실패가 떠버린 것이다..

vi로 dockerStop.sh를 비롯해 appspec.yml의 hooks에서 지정해놓은 shellscript를 수정하고 다시 deploy를 했더니 성공했다.