위 블로그를 참고해 CodeDeploy 설정을 하던 중에 EC2 IAM Role과 CodeDeploy IAM Role을 생성하게 되는데,
나는 CodeDeploy가 일방적으로 EC2에 배포를 한다고 생각하고 있었는데
EC2 IAM Role을 왜 생성하는가 대해 찾아보다가 CodeDeploy Agent의 존재에 대해 알게되었다.
✨ CodeDeploy와 CodeDeploy Agent가 배포를 진행하는 과정
일단 내가 하려는 CI/CD 흐름은 Github Actions가 S3에 빌드 파일을 업로드하고 CodeDeploy에게 배포 요청을 보내면 CodeDeploy가 S3에 업로드된 빌드 파일을 EC2에 배포하는 것이다.
🔔 CodeDeploy with 배포 지침 👉🏻 CodeDeploy Agent
이 과정에서 CodeDeploy가 EC2에 배포를 하기 전에 EC2에 CodeDeploy Agent가 설치된다.
그래서 Github Actions가 CodeDeploy에 배포 요청을 보내면 CodeDeploy는 EC2에 설치된 CodeDeploy Agent에게 배포 지침을 보내게 된다. 그리고 이 배포 지침에는 배포 파일의 위치(S3 버킷 경로 등)와 배포 방법에 대한 정보가 포함되어 있다고 한다. CodeDeploy는 저장 기능이 없기 때문에 배포 파일을 직접 EC2에 보낼 수 없어 CodeDeploy Agent에 배포 지침을 보내는 것이다.
🔔 CodeDeploy Agent 👉🏻 S3
그럼 이 배포 지침을 받은 CodeDeploy Agent는 S3 버킷에 접근해 배포 파일을 다운로드한다. 이 과정에서 CodeDeploy Agent는 EC2 인스턴스에 설치되어 있기 때문에 EC2가 S3에 접근할 수 있는 권한이 필요한 것이다. S3에서 가져온 배포 파일을 EC2 인스턴스에 배치하고, 배포 스크립트를 실행한다.
🔔 CodeDeploy Agent 👉🏻 CodeDeploy
CodeDeploy Agent는 배포가 완료되면 상태를 CodeDeploy에 보고한다. 마찬가지로 보고를 하기 위해선 EC2에서 CodeDeploy에 접근할 수 있는 권한이 필요한 것이다.
✨ 요약
요약을 해보자면
CodeDeploy가 EC2 인스턴스의 CodeDeploy Agent에 배포 지침을 보내면,
CodeDeploy Agent가 배포 지침 바탕으로 S3에서 배포 파일을 받아와 배포 수행 후 배포 상태를 CodeDeploy에 보고한다.
그러니까 CodeDeploy는 메뉴얼만 보내주고 실제로 배포 파일을 찾아오고 배포를 하는건 CodeDeploy Agent인 셈이다.
어쨋든 EC2 IAM Role과 CodeDeploy IAM Role이 필요한 이유도 이와 같다 ! ! !
'Spring' 카테고리의 다른 글
멱등성, @PutMapping과 @PatchMapping의 차이 (0) | 2024.09.11 |
---|---|
Spring 페이징 처리 시 Pageable vs @RequestParam 비교 (0) | 2024.09.10 |
데이터 전달 시 Map보다 DTO를 사용해야 하는 이유 (0) | 2024.09.04 |
[AreYouTravelers] 시스템 아키텍처 (0) | 2024.06.26 |
스프링 프레임워크와 의존성 주입 (3) | 2023.03.07 |