AWS CodeDeploy 에러 해결, 권한 문제

2025. 2. 13. 20:58·트러블 슈팅

Git action -> codedeploy를 통해 프로젝트 배포를 자동화하는 CICD를 진행 도중 codedeploy가 정삭적으로 작동하지 않는 문제가 발생했다.

codeploy의 상세 events를 살펴보면

위 이미지와 같이 첫 단계도 제대로 실행이 되지 않은 모습니다.

상세 에러 메시지를 살펴보니

위와 같은 에러가 나타났다.

에러 메시지

CodeDeploy agent was not able to receive the lifecycle event. Check the CodeDeploy agent logs on your host and make sure the agent is running and can connect to the CodeDeploy server

위 메시지를 보고 일단은 ec2에서 COdeDeploy agent가 lifecycle event(appspec.yml)를 받지 못했기 때문에 아무 작업도 수행하지 못한 것이라는 것을 알 수 있었다.

이때 어디 부분이 문제일까 고민했을 때 에러가 발생했을 지점을 다음과 같이 예측했다.

문제 지점 추론

  1. git repository에서 codedeploy가 appspec.yml 파일을 가져오지 못함

위와 같이 예측한 이유는 간단했다. appspec을 정의 해서 github repository에 올려두었고 git action에서 codedeploy에 create deploy를 하며 appspec을 가져가도록 했으나 에러 메시지가 lifecycle event를 받을 수 없다고 떠있었기 때문에 가장 먼저 떠올린 부분이었다.

하지만 git action의 .yml 파일을 보았을 때 문제점을 전혀 찾을 수 없었고, 실제 참조하고 있는 github의 commit id를 통해 repository를 살펴 보았을 때 정상적으로 appspec.yml이 존재하는 것을 확인했다.

개정 위치 확인

appspec.yml 파일 존재 확인

이를 통해 git repository에서 codedeploy가 appspec.yml 파일을 가져오지 못하는 것은 아니라고 결론 지었다.

문제 원인 파악 -Log

문제 원인을 정확히 파악하기 위해 ec2에 직접 접속하여 Codeploy의 log를 확인해보도록 하였다.

로그 위치 : /var/log/aws/codedeploy-agent

해당 위치로 접근하여 로그를 살펴보았다.

2024-08-25T14:00:33 ERROR [codedeploy-agent(955)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Missing credentials - please check if this instance was started with an IAM instance profile
2024-08-25T14:02:03 INFO  [codedeploy-agent(955)]: Version file found in /opt/codedeploy-agent/.version with agent version OFFICIAL_1.7.0-92_deb.
2024-08-25T14:02:03 ERROR [codedeploy-agent(955)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Error polling for host commands: Aws::Errors::MissingCredentialsError - unable to sign request without credentials set - /opt/codedeploy-agent/vendor/gems/aws-sdk-core-3.121.1/lib/aws-sdk-core/plugins/signature_v4.rb:74:in `sign_request'

위와 메시지를 통해 ec2에서 codedeploy agent가 작동하기 위한 권한이 없다는 사실을 알게되었다.

알고보니 기존에 ec2에서 넣어주기 위한 Role 생성을 해두었지만 넣어주는 것을 깜빡했기 때문이다.

해결

Role 생성

ec2가 codeDeploy에 관련된 권한을 갖고 있어야 한다.

  1. AmazonEC2RoleforAWSCodeDeploy
  2. AWSCodeDeployRole

위 두 개의 권한을 가진 role을 생성하고 ec2에 해당 role을 넣어주면 정상적으로 작동이 된다.

'트러블 슈팅' 카테고리의 다른 글

Jpa 테스트 시 TransactionRequiredException 발생과 해결  (0) 2025.03.16
SpringBoot 버전 업에 따른 RestClient 에러 발생 해결  (0) 2025.02.16
QueryDSL 동적 조회 조건 생성 시 조인 문제  (3) 2025.02.13
AWS Fargate에서 Eureka 사용 시 Eureka Client의 IP 추적 문제  (0) 2025.02.13
비동기 요청 시 AuditorAware 문제  (0) 2025.02.13
'트러블 슈팅' 카테고리의 다른 글
  • Jpa 테스트 시 TransactionRequiredException 발생과 해결
  • SpringBoot 버전 업에 따른 RestClient 에러 발생 해결
  • QueryDSL 동적 조회 조건 생성 시 조인 문제
  • AWS Fargate에서 Eureka 사용 시 Eureka Client의 IP 추적 문제
shoon95
shoon95
shoon95 님의 블로그 입니다.
  • shoon95
    shoon95 님의 블로그
    shoon95
  • 전체
    오늘
    어제
    • 분류 전체보기 (18)
      • 백엔드 (10)
      • 프로젝트 (1)
      • 트러블 슈팅 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
    • 학습 정리
  • 공지사항

  • 인기 글

  • 태그

    동시성
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
shoon95
AWS CodeDeploy 에러 해결, 권한 문제
상단으로

티스토리툴바