AWS

NodeJS - AWS CI/CD로 자동배포 (CodeDeploy / CodePipeline)

핏짜보이 2022. 12. 1. 17:05
반응형

본 게시글의 작성 기준일을 22년도 12월입니다.

(구글링을 하다보니, 너무 이전 버전에서는 UI가 달라 설정하는 요소가 다른 경우가 있어서 말씀드립니다.)

 

 

 

[AWS CI/CD Workshop]

인프라스트럭쳐 단계

  • CDK Application 준비

소스코드 단계

  • 레포지토리 시드

=> curl 명령어로 입력시 InfrastructureApp / DemoApp 폴더 생성 및 2개의 인스턴스(PrdWebApp, DevWebApp) 생성

  • 해당 인스턴스에 CI/CD가 진행될 예정인데, 해당 인스턴스에 대한 로그 확인은 SSM 세팅으로 접근하여 확인 가능

 

[해야할 일]

* appspec.yml 작성

* scripts 폴더에서 code deploy life Cycle 따라 실행될 shell 파일 작성

 

[deployment lifecycle]

 

 

배포 - codeDeploy(22년 12월 기준)

  1. 애플리케이션 생성
  2. 배포그룹 생성
  3. 배포 생성 -> 실제로 생성된 배포에서 배포가 진행됨.
  4. 배포그룹 선택 - 개정 유형 선택 (Github에 저장)
  5. Github 토큰 이름 입력 - 계정별 github 엑세스 토큰 발급후 연결
  6. 레포지토리 이름 작성 (계정이름/레포이름) 형식으로 입력!
  7. 추가 배포동작 설정 - 콘텐츠 옵션 : 배포 실페에 체크!
  8. 배포 만들기 실행! -> 배포 성공 확인하기!

 

[배포 만들기 실행시, 만났던 에러]

1. 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 agent가 라이프사이클 이벤트를 만나지 못했기 때문! 프로젝트에서 작성한 appspec.yml 이 프로젝트 폴더의 최상단에 위치해야 해당 값을 읽어올수 있었음!
  • 조치 방법 : appspec.yml + scripts폴더(appspec.yml 파일에서 라이프사이클에 따라 실행될 파일들이 있는 디렉토리)를 프로젝트 폴더의 최상단으로 옮긴다.

 

2. Script at specified location: scripts/basic_health_check.sh failed with exit code 1

  • 원인 : scripts폴더에 있는 체크 파일을 실행했을 때, 시간내에 응답을 받아오지 못했기 때문!
  • 조치 방법 : ValidateService 단계를 삭제했다... (근본적인 해결책은 아니지만, 코드를 수정하고 AWS 에 반영되기까지 어느정도 시간이 소요되는 것 같았다! 체감상 5분 이내?)

 

3. Could not download bundle at 'https://api.github.com/repos/계정이름/레포이름/tarball/1961a5eab903d64ad5bb7e53f1fea35deaa74835' after 3 retries. Server returned codes: 404 'Not Found'; 404 'Not Found'; 404 'Not Found'; 404 'Not Found'.

  • 원인 : 이 에러는 내가 계정이름에 오타가 났을때 나온 에러이다....
  • 조치 방법 : 가장 안전하게 계정 이름/ 레포 이름을 긁어서 붙여넣었다...ㅎ

 

파이프라인 - codePipeline

  1. 파이프라인 생성
  2. 이름 설정 // 서비스 역할 : 서비스 역할 // 역할 이름 : 파이프라인 이름이 포함되어 자동으로 생성됨! 
  3. 다음!
  4. 소스공급자 : Github(버전2) - 버전2 권장하고 버전1 권장하지 않음. // 
  5. 연결 : Github - OAuth 연결 // 레포 - 브랜치 이름 선택
  6. 나머지는 기본값으로 두고 다음!
  7. 빌드 스테이지 통과
  8. 배포 스테이지 codeDeploy에서 생성한 배포 그룹 선택
  9. 검토 파이프라인 생성!

 

 

 

AWS CLI 설치/ 업데이트 자료

https://docs.aws.amazon.com/ko_kr/cli/v1/userguide/install-linux.html

AWS CDK 시작 자료

https://aws.amazon.com/ko/getting-started/guides/setup-cdk/module-two/

https://docs.aws.amazon.com/ko_kr/cdk/v2/guide/cli.html

AWS codeDeploy 자료 

https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html#appspec-reference-server 

https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/deployments-create-console.html

AWS codePipeline 자료

https://docs.aws.amazon.com/codepipeline/latest/userguide/getting-started-codepipeline.html 

소속기관의 레포가 안보이는 이슈 

https://stackoverflow.com/questions/32397338/aws-codepipeline-not-able-to-access-organizations-repositories

AWS CI/CD 워크샵 자료

https://catalog.us-east-1.prod.workshops.aws/workshops/cbcd960c-a07b-40c2-a01d-1d2e7a52b945/ko-KR/60-pipeline/200-verify-pipeline

AWS SSM 자료

https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/session-manager-prerequisites.html

SSM 설치 밎 확인 관련 블로그

https://dev.classmethod.jp/articles/lim-ssm-ec2-onpremise/

AWS appspec.yml 파일 관련 자료

https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure.html

AWS codeDeploy agent 관련 자료

https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html

AWS CLI 명령어 사용하기

https://potato-yong.tistory.com/94

How to resolve: 'Unanle to resolve AWS account to use. It must be eithre configured when you define your CDK or through the environment -> AWS CLI 설치해야함!

https://stackoverflow.com/questions/58963515/how-to-resolve-unable-to-resolve-aws-account-to-use-it-must-be-either-configu

 

 

 

 

 

 

728x90