[AWS] CodeDeploy 오류: 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.
개발환경은 아래와 같다.
- Github Actions
- AWS S3
- AWS CodeDeploy
- AWS EC2(ubuntu server v22.04)
위 환경에서 배포 자동화 설정 중 CodeDeploy에서 발생했던 오류를 해결했던 정리하려한다.
AWS CodeDeploy Console 오류 화면 |
오류 메세지: 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 콘솔에서 배포 오류 이벤트 내역을 확인해도 되지만 보다 정확한 문제를 확인하기위해서는 CodeDeploy가 실행되는 ec2 인스턴스에 ssh에 접속해 CodeDeploy에 대한 로그를 확인해보는것이 좋다.
* Ubuntu EC2 인스턴스에 CodeDeploy agent가 설치되어 있어야 한다.
Install the CodeDeploy agent for Ubuntu Server
아래 명령어를 통해 codedeploy agent log가 저장되어있는 위치로 이동한다.
$ cd /var/log/aws/codedeploy-agent
아래 명령어를 통해 로그 내역을 확인할 수 있다.
$ cat codedeploy-agent.log
나의 경우 로그에 아래와 같이 에러 로그가 찍혀있었다.
ERROR [codedeploy-agent(2423)]: InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Missing credentials - please check if this instance was started with an IAM instance profile
INFO [codedeploy-agent(2423)]: Version file found in /opt/codedeploy-agent/.version with agent version OFFICIAL_1.7.0-92_deb.
ERROR [codedeploy-agent(2423)]: 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.1
세가지 에러 중 첫번째 에러를 찾아보면 aws-documents에 오류 원인으로 두가지를 설명한다.
첫번째, 배포하려는 인스턴스에 IAM 인스턴스 프로파일이 연결되어 있지 않다.
두번째, IAM 인스턴스 프로파일에 권한이 올바르게 구성되어 있지 않다.
그래서 공식문서를 토대로 몇가지를 체크 해봤다.
첫번째, EC2 인스턴스에 IAM role이 제대로 적용되어있는지 확인
두번째, IAM role에 AmazonS3FullAccess와 AWSCodeDeployFullAccess 두가지 권한이 설정되어있는지 확인
세번째, codedeploy-agent가 제대로 설치되었고 동작하고있는지 확인
모두 제대로 적용하고 동작중인데도 동일하게 문제가 발생했다.
원인은 EC2 인스턴스에 IAM role를 수정 또는 적용하고 codedeploy-agent를 재실행해줘야지 새롭게 적용된 IAM role이 적용이 되는것이었다.
아래 명령어를 사용해서 codedeploy-agent를 재실행한다.
$ sudo service codedeploy-agent restart
그리고 다시 배포해보면 아래와 같이 성공한다.
댓글
댓글 쓰기