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.
CodeDeploy 에서 아래와 같이 초기부터 실행이 안되는 에러를 마주했다.
관련 로그는 CodeDeploy가 배포하는 서버에 접속하여 아래 커맨드로 조회 가능하다.
less /var/log/aws/codedeploy-agent/codedeploy-agent.log
내 경우엔 아래와 같이 IAM 에러가 나왔다.
2024-10-10T05:33:56 ERROR [codedeploy-agent(123974)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Missing credentials - please check if this instance was started with an IAM instance profile
2024-10-10T05:34:06 INFO [codedeploy-agent(123974)]: Version file found in /opt/codedeploy-agent/.version with agent version OFFICIAL_1.7.0-92_rpm.
2024-10-10T05:34:06 ERROR [codedeploy-agent(123974)]: 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
EC2에 IAM 역할을 기입한걸 빼먹었었다
EC2에 부여할 역할 생성 하였다
ec2 들어가서 대상 인스턴스의
작업 -> 보안 -> IAM 역할 수정에서 생성한 IAM 역할을 연결해줬다.
환경변수 or args 전달 안되는 문제.
appspec.yml 에서 아래 부분에 location 뒤에 arg 를 주던, env 를 주던 적용이 안되는 이슈가 있었다.
내부 스크립트 내 기본 환경변수 참고하여 해결했다.
hooks:
AfterInstall:
- location: scripts/deploy.sh
timeout: 300
runas: ec2-user
docker-compose: command not found
CodeDeploy 로 실행되는 환경에선 /usr/local/bin 파일의 경로를 Path 로 안잡아서 따로 추가했다.
deploy.sh
# docker-compose 경로를 PATH에 추가
export PATH=$PATH:/usr/local/bin
디버깅 방법
AWS Console 에서 확인이 안된다면, 배포 대상 서버에서 log를 확인하며 진행하면 편하다.
tail -f /var/log/aws/codedeploy-agent/codedeploy-agent.log
그리고 appspec.yml 에서 설정한 destination 경로에 파일 자체가 압축이 풀려 존재하지 않는다면
appspec.yml 자체를 잘못 작성한 것이다.
'IT 기술 > AWS' 카테고리의 다른 글
[AWS] API Gateway Lambda 통합 Proxy 설정 (1) | 2024.11.03 |
---|---|
[AWS] EC2 절약하기!! - 람다, EventBridge로 스케줄링하기 -2 (4) | 2024.10.21 |
[AWS] EC2 절약하기!! - 람다, EventBridge로 스케줄링하기 -1 (1) | 2024.10.21 |
[AWS] Access key 발급하기 (0) | 2024.10.08 |