[Server/AWS] AWS를 이용한 Spring Boot 서버 배포 - 자동 배포를 위한 S3, CodeDeploy 연결

HAEN·2023년 3월 14일
0

EC2에서 서버를 수동으로 배포할 수도 있지만, 수동 배포를 하면서 너무 번거로웠기에... AWS S3와 CodeDeploy를 이용한 자동 배포로 바로 넘어가보겠다! 아래는 간단한 서비스 아키텍처 사진이다
간단하게 설명하자면 S3는 AWS에서 제공하는 객체 스토리지 서비스, 즉 저장소이고,
CodeDeploy는 마찬가지로 AWS에서 제공하는 애플리케이션 배포 자동화 서비스이다


1. S3 버킷 생성

S3 버킷에 GitHub Action을 통해 빌드한 jar 파일을 업로드하기 위해 S3를 연결하겠다

AWS S3 -> 버킷 만들기

버킷 이름과 AWS 리전을 설정해주고 나머지는 모두 기본 설정으로 버킷을 생성해준다


2. IAM 설정

(1) 사용자 생성

자동 배포를 위해서 권한 설정이 필요하다

AWS IAM -> 사용자 -> 사용자 추가
이름 설정 후 '다음'을 누른다

이어서 '직접 정책 연결'에서 S3와 CodeDeploy를 사용하기 위해 아래 권한 정책 3개를 연결해주고 '사용자 생성'을 눌러 생성을 완료한다

AmazonS3FullAccess
AWSCodeDeployFullAccess
AWSCodeDeployRole

사용자가 잘 만들어진 것을 확인할 수 있다

(2) 역할 생성

우선 CodeDeploy용 역할과 EC2 역할을 나누어 생성할 것이다
AWS IAM -> 역할 -> 역할 만들기

위와 같이 설정하고 '다음'을 누른다

CodeDeploy용 역할에는 권한에 'AWSCodeDeployRole' 추가
EC2용 역할에는 권한에 'AmazonS3FullAccess', 'AWSCodeDeployFullAccess' 추가
권한 추가를 확인해주고 '다음'

역할 이름과 설명을 적어주고 '역할 생성'을 눌러 역할을 생성해준다


3. EC2 설정

(1) 태그 추가

CodeDeploy가 어떤 인스턴스에서 실행되는지 구분하기 위해 인스턴스에 태그 값을 추가해주어야한다

AWS EC2 -> 인스턴스 선택 -> 작업 -> 인스턴스 설정 -> 태그 관리

원하는 키 값을 입력하고 저장을 누른다

인스턴스 세부 정보에서 저장한 태그값을 확인할 수 있다

(2) IAM 연결

EC2에서 S3에 접근할 수 있도록 권한을 추가해주겠다

인스턴스 선택 -> 작업 -> 보안 -> IAM 역할 수정

위에서 만들어놓은 EC2용 IAM 역할을 선택하고 업데이트를 눌러 연결한다


4. CodeDeploy Agent 설치

AWS 공식문서에 친절하게 설치 방법이 나와있다 -> CodeDeploy 에이전트 설치

Linux, Ubuntu 등 환경에 맞춰 설치를 하면 된다

정상적으로 설치되어 실행되고 있는 것을 볼 수 있다


5. CodeDeploy 생성

(1) 애플리케이션 생성

AWS CodeDeploy -> 배포 -> 애플리케이션 -> 애플리케이션 생성

애플리케이션 이름과 컴퓨팅 플랫폼을 설정해주고 '애플리케이션 생성'을 누른다

(2) 배포 그룹 생성

위에서 만든 애플리케이션 상세페이지에서 배포 그룹 생성을 누른다
(이미 만들어놓은 배포 그룹이 있는 상태)

배포 그룹 이름을 입력해주고
서비스 역할은 위에서 만든 CodeDeploy용 IAM 역할을 선택해준다
배포 유형은 현재 위치로 한다 블루/그린은 무중단 배포를 위해 사용한다(유료)

이어서 환경 구성에서 Amazon EC2 인스턴스를 선택하고 인스턴스의 태그를 추가하면 된다

이렇게 설정을 마치고 배포 그룹을 생성해준다
이 부분은 애플리케이션의 특성에 맞게 알아보고 설정하면 될 것 같다



여기까지 EC2 인스턴스에 S3와 CodeDeploy를 연결하는 작업을 마쳤다
다음에는 GitHub Action을 통한 자동 배포에 대해 포스팅하도록 하겠다

profile
핸수

0개의 댓글