에러 확인 방법
appspec.yml 에러인지 아니면 다른 에러인지 아직 잘 모르겠는 분들을 위해 에러 메시지 확인하는 방법을 설명드리겠습니다.
웹 페이지로 확인하기
'CodeDeploy - 배포 - 배포ID' 여기까지 들어오셨다면 배포에 관한 각종 세부 정보들을 확인하실 수 있습니다.
최하단에 배포 수명 주기 이벤트라고 있습니다. 저기서 View events를 눌러주세요.
그러면 무슨 에러로 인해 이벤트가 종료됐는지 설명해줍니다.
log 파일 확인하기
Codedeploy와 관한 log들은 /var/log/aws/codedeploy-agent/codedeploy-agent.log 에 기록됩니다.
tail -F 라던가 less 라던가 활용하셔서 에러 메시지를 찾아주세요. command_status:"Failed" 가 적힌 라인에서 message 값을 읽어주시면 됩니다.
에러 메시지 예시는 기계인간님 포스팅에 나와있기에 글 링크를 걸어두겠습니다.
johngrib.github.io/wiki/CodeDeploy/
appspec.yml 에러 해결법
메시지를 잘 살펴보시면 appspec.yml을 찾지 못해서 에러가 발생했다고 합니다. 간혹 appspec.yml 말고 appspec.yaml로 하면 인식한다는 분들도 계시니 참고해주세요. 또는 yml 문법 오류가 발생해도 관련 문제가 생긴다고 합니다. 오타의 경우 금방 캐치하고 수정하시겠지만 공백과 관련한 문제들도 있으니 체크해주세요. (특정 에디터에서 자동 들여쓰기 적용해도 깨지는 경우가 있다고 함.) 문법과 관련한 글 링크 첨부하겠습니다.
docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/reference-appspec-file.html
appspec.yml의 파일 위치 때문에 못찾는 경우도 있습니다. 아래 사진처럼 프로젝트 최상단 dir에 있어야합니다.
저 같은 경우에는 'github workflow(action)에서 build -> s3 bucket로 빌드 내용 전송 -> codedeploy로 배포' 의 흐름으로 작업되도록 설정했습니다. 이때 build한 jar파일만을 bucket으로 보냈습니다. ec2에 appspec.yml이 있으니까 괜찮겠지 생각했는데 codedeploy를 들른 다음에 ec2로 접근하기에 무쓸모였죠. jar 파일을 뜯어보면 그 어디에도 appspec.yml이 없습니다. 그 jar만 덩그러니 받은 codedeploy 입장에서는 당황스러웠겠죠. 결국 그냥 build한 프로젝트 전체를 버킷으로 전송한 뒤에 문제를 해결할 수 있었습니다.
정리
- appspec.yml 파일의 위치를 확인해보자
- appspec.yml 대신 appspec.yaml로 이름을 변경해보자
- 문법 오류는 없는지 다시 체크하기
'TechTalk' 카테고리의 다른 글
[IntelliJ] Could not target platform 에러 (0) | 2021.02.15 |
---|---|
[리뷰] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (0) | 2021.02.05 |
[Github] refusing to allow a Personal Access Token to create or update workflow 에러 해결 (0) | 2021.02.02 |
github 오픈 소스 프로젝트 컨트리뷰트 하기(2) (0) | 2021.02.01 |
메인 페이지 수정하기 (0) | 2020.07.28 |