🚒 DevOps

CodeDeploy 디버깅

thumbnail
category
🚒 DevOps
tags
CD
AWS
summary
단순한 생각으로, 아주 짧은 디버깅 💨
이전 글에서 빌드→배포 파이프라인을 작성했었다.
전반적으로 순조로웠지만 하나 이슈가 있었어서 적어둔다.
 
 

배포 실패?


파이프라인 구축 마지막 단계에서 배포가 실패하는 일이 발생했다.
notion image
첫 실패는 일종의 ‘실험’이었기 때문에 어느정도 예상했었다.
배포할 압축 파일을 S3 버킷에 업로드하는 과정에서
cli 명령어 ... [버킷위치] [버킷이름]
이런식으로 명령어에 필요한 파라미터가 순서대로 있을 때, 나는 버킷 내부의 폴더로 업로드 하고 싶었으나 대부분 예제가 버킷에 업로드하는 코드밖에 없어서 나름 테스트를 해봤었다.
[위치] 부분에 Bucket_name/folder 로 적어보는 것으로 실험해본건데 예상한 실패였고 [이름] 부분에 적어주니 간단히 해결되어 원하던 방식으로 동작했다.
 
문제는 2번째 실패였다.
 
 

어디서 부터 찾아야 하지?


AWS CodeDeploy 화면에서는 실패했다는 표시만 있을 뿐 디버깅을 도와주진 않았다.
때문에 어떤 에러인지를 알 수 없었고, CodeDeploy를 운영이 아닌 구축을 해본 경험은 처음이라서 어떻게해야 할지 몰랐다.
notion image
 
 
 
 

길을 찾아보자.


새벽을 넘어갈 쯤이라 그냥 잘까 생각하던 중, 되게 단순한 아이디어가 떠올랐다.
이것도 에이전트로 동작하는 서비스인데 당연히 어딘가 디버깅을 위한 로그를 적재하고 있지 않을까?
 
검색을 해도 나오는 건 많지 않아서 그냥 EC2에 접속하여 에이전트가 설치된 경로들을 살펴봤다.
그리고 로그가 담기는 디렉토리를 찾았다!
/var/log/aws/codedeploy-agent
여기에 로그들이 남아있었고 드디어 에러 로그를 볼 수 있었다.
 
{"error_code":2,"script_name":"","message":"이슈 요약","log":""}"}
로그는 위와 같은 형태로 적혀있었고 error_code를 기준으로 검색하여 파일 이름이 다르다는 걸 찾았다 😇
 
CodeDeploy는 appspec.yml 이라는 설정 파일을 가지고 있어야 하는데, 내가 JVM 언어에 익숙했던 탓에 나도 모르게 appSpec.yml 이라고 카멜 케이스로 적어둔 것이 화근이었다…
 
 
 

원초적으로 생각하자


오류가 났다면 로그를 봐야한다.
로그가 어디있는지 찾자.
 
위 2가지의 단순한 사고로 대부분의 문제는 해결할 수 있다. 기억하자.
 
그리고 CodeDeploy에서 로그가 어디에 저장되는지 알았으니 후에 또 이슈가 발생한다면 어디서 봐야할 지 알았다! 🤪