Backend

[SpringBoot] 프로젝트 AWS EC2로 배포하기(1)

76 2024. 2. 22. 01:33
728x90

 

1. AWS에 접속하여 ec2를 검색한다.

 

2. 인스턴스 시작을 클릭한다.

 

3. AMI(Amazon Machine Image)를 세팅한다.

OS는 AWS 프론티어가 제공하는 Ubuntu LTS 로 선택하였고, 인스턴스 유형은 tc.mircro로 설정하였다.

(다른 유형으로 선택할 경우 과금요소가 추가된다.)

 

 

 

4. 키 페어를 생성한다.

키는 한 번 생성하면 다시 다운로드 받을 수 없으므로 잘 보관해야 한다. 생성된 키는 추후 SSH 프로토콜을 사용해 EC2 서버와 연결하는데 사용된다.

키 페어 생성 버튼을 클릭하면 자동으로 .pem파일이 다운로드 된다.

 

5. 네트워크 설정

기존에 만들어 둔 보안 그룹이 있다면 선택하거나 새롭게 만들어도 된다. 보안 그룹은 생성된 EC2서버에서의 방화벽에 해당하며 어떤 포트에 대한 접근을 허용할 것인지, 어떤 IP를 허용할것인지 등을 설정할 수 있다.

 

'다음에서 SSH 트패픽 허용' 부분은 외부(우리의 작업환경,등)에서 SSH 프로토콜을 통한 접속을 허용할 것인지 묻는 것으로, 초기에 서버를 가동시키기 위해 앞서 다운받은 .pem파일을 사용하여 SSH 프로토콜로 서버에 접속을 할 것이므로 체크하도록 한다.

고정 IP를 사용하는 환경에서만 접근을 허용하도록 할 것이라면 특정 IP를 입력하도록 하고, 그렇지 않다면 위치 무관(0.0.0.0/0)으로 두도록 한다.

 

6. 스토리지 설정

EC2 서버가 사용할 저장공간을 선택하는 단계이다. 당연한 말이지만 저장소를 크게 설정할수록 금액이 더 많이 발생한다.

프리티어는 최대 30GB를 지원하므로 30으로 설정하였고, 유형은 범용 SSD(gp2)로 선택하였다.

'프로비저닝된 IOPS SSD' 를 선택 할 경우, 사용하지 않더라도 활성화한 기간만큼 비용이 발생하므로 프리티어로 사용시 주의해야 한다.

 

7. 인스턴스 생성

요약된 정보를 확인하고, 올바르다면 인스턴스 시작을 눌러 생성을 진행한다.

 

생성된 인스턴스 아이디를 클릭하면 인스턴스 페이지로 넘어간다.


8. 보안 그룹 수정하기

왼쪽 메뉴 탭에서 네트워크 및 보안 - 보안 그룹을 클릭한다.

 

 

보안 그룹 생성 버튼을 클릭한다.

이름과 설명을 기입한다.

 

인바운드 규칙을 생성한다.

 

인바운드 규칙 : 외부에서 EC2나 RDS 등의 내부로 접근할 때 사용되는 방화벽 규칙

아웃바운드 규칙 : EC2나 RDS 등의 내부에서 외부로 접근할 때 사용되는 방화벽 규칙

 

스프링부트는 8080포트를 사용하므로 사용자 지정 TCP/8080를 허용하고 .pem파일을 통해 EC2에 접속할 때 SSH 프로토콜을 사용하므로 SSH/22를 허용하고 HTTP/80, HTTPS/8080 도 허용해주도록 한다.

 

추가로 필요한 접근이 있다면 해당하는 포트도 추가해주면 된다.

 

아래와 같은 화면이 뜨면 성공이다.

 

다시 인스턴스 페이지로 이동하고, 우클릭 - 보안 - 보안 그룹 변경을 클릭한다.

 

방금 전 생성한 보안 

 

9. SSH키로 EC2 서버에 접속하기

인스턴스 페이지에서 연결 버튼을 클릭한다.

 

여러가지 방식이 있지만, SSH 로 연결해볼 것이다.

AWS에서 제공하는 가이드 라인에 따라 1~4번 과정을 진행한다.

 

9-1. 터미널을 열어 앞서 저장해둔 SSH키(.pem)가 존재하는 디렉토리로 이동한뒤, 아래 명령어를 입력하여 pem파일에 권한을 부여한다.

chmod 400 키이름.pem

 

9-2. ssh 명령어로 EC2 인스턴스에 접속한다. (명령어는 가이드라인에 나와있다.)

ssh -i "sshKey.pem" ubuntu@ec2-43-200-8-55.ap-northeast-2.compute.amazonaws.com

 

아래와 같이 뜨면 접속 성공이다.

 

EC2 서버에서 SpringBoot 서버를 실행시키는 과정은 다음 포스팅에서 이어서 작성하겠다.