gi_dor

배포 자동화 중 발생한 문제 본문

AWS/CI CD

배포 자동화 중 발생한 문제

기돌 2024. 6. 25. 19:29
728x90

 

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.

 

검색을 해보니 CodeDeploy 공식문서를 참조해 로그를 확인 하라고 한다

https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/deployments-view-logs.html#deployments-view-logs-instance-unix

 

CodeDeploy EC2/온프레미스 배포에 대한 로그 데이터 보기 - AWS CodeDeploy

AWS Lambda 또는 Amazon ECS 배포에는 로그가 지원되지 않습니다. EC2/온프레미스 배포에만 사용할 수 있습니다.

docs.aws.amazon.com

less /var/log/aws/codedeploy-agent/codedeploy-agent.log
/ ERROR

 

InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Error during perform: Aws::S3::Errors::NoSuchKey - The specified key does not exist. - /opt/codedeploy-agent/vendor/gems/aws-sdk-core-3.121.1/lib/seahorse/client/plugins/raise_response_errors.rb:17:in call'

EC2의 IAM Role이 바뀌면 CodeDeploy Agent restart를 수행한다고 한다

1. IAM ,  codeDeploy , 정책 , 권한 S3 전부 삭제 후 재 설정
2. codedeploy-agent 재시작

sudo service codedeploy-agent restart
      - name: Code Deploy를 활용해 EC2에 프로젝트 배포하기
        run: aws deploy create-deployment
          --application-name bookhub-server
          --deployment-config-name CodeDeployDefault.AllAtOnce
          --deployment-group-name Production2
          --s3-location bucket=bookhub-server,bundleType=tgz,key=$GITHUB_SHA.tar.gz

성공적으로 작업이 완료되었다는걸 확인할 수 있다

하지만 해당 IP로 접속이 불가능하다 

 

이제 이 부분은 scripts/start-server.sh를 점검하시면서 왜 작동이 안 됐는 지 체크해봐야할 것 같다

스크립트 파일의 코드를 실행시키다가 특정 부분에서 에러가 나서 작동이 안 됐을 가능성이 크다보니
스크립트 파일의 내부 코드를 EC2에서 로그를  입력해서  에러 원인을 찾아보려고 한다

 

nohup 명령어의 로그 파일 (output.log)을 확인해 어떤 오류가 발생했는지 확인

cat /home/ubuntu/BookHub_AWS/output.log

서버가 8080포트에서 실행 중인지 확인

lsof -i:8080

어림도 없지 역시나 실행되고있지 않다.

로그 확인결과

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'communityController' defined in URL [jar:nested:/home/ubuntu/BookHub_AWS/project.jar/!BOOT-INF/classes/!/com/example/bookhub/board/controller/CommunityController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'communityService': Injection of autowired dependencies failed
Spring Boot 애플리케이션에서 CommunityController를 생성하는 동안 의존성 주입이 실패하는 문제가 발생했다고 한다 
원인은 communityService 빈을 생성하는 중에 image.upload.dir이라는 속성을 찾을 수 없기 때문이라고 하는데

왜 ?  갑자기 ? 이제와서 ?

application.properties 내에 image.upload.dir 경로가 없어서 그렇다는데  이미 있고.. 원하는대로 수정도 했잖아..

 

*************************** APPLICATION FAILED TO START *************************** Description: Parameter 0 of constructor in com.example.bookhub.user.util.MailService required a bean of type 'org.springframework.mail.javamail.JavaMailSender' that could not be found. Action: Consider defining a bean of type 'org.springframework.mail.javamail.JavaMailSender' in your configuration.

이번에는 JavaMailSender 빈이 정의되어 있지 않다고 ??

이쁘게 잘있는데...

혹시나 하는 생각에 현재 프로젝트에는 application.properties 로 되어있는데

      - name: application.properties 파일 만들기
        run: echo "${{ secrets.APPLICATION_PROPERTIES }}" > ./src/main/resources/application.properties

이 부분이 혹시나 문제일까봐 yml로 변경하고 나서 push 이후 

다시 log를 찍어 확인하니 정상적으로 작동이 되었다..

 

 

728x90