Project/Study

[AWS] Spring + React 배포하기 #1 AWS EC2 인스턴스 생성

by somida 2022. 8. 23.

 

AWS를 사용해서 Spring + React의 소스를 배포하는 프로젝트를 진행하게 되었는데, 먼저 AWS EC2부터 설정을 하여 서버 환경을 구축해보자

 

 

0. AWS 가입 및 로그인, 리전 설정

 

 

 

 

1. EC2 인스턴스 생성

EC2(Elastic Compute Cloud)는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버를 의미한다. 

(클라우드 컴퓨터를 빌린다?)

 

Amazon EC2 사용을 위해서는 Amazon EC2 인스턴스라고하는 가상 서버를 시작해야 한다.

인스턴스 시작을 누르고 시작한다.

 

1) AMI(Amazon Machine Image) 선택

아마존 머신 이미지는 EC2 인스턴스를 시작하는 데 필요한 정보들을 이미지화 시켜둔 것이다. 운영체제와 같은 것을 그대로 이미지화해서 백업 파일을 만들어 놓는 것과 같다고 생각하면 될 것 같다.

즉, 새 컴퓨터를 구입했을 때 다시 설치하는 작업들을 안해도 되는 것이다.

 

여기서는 Amazon Linux 2 AMI를 선택해서 진행한다. 해당 AMI는 아마존에서 직접 만들었기 때문에 아마존 웹서비스에 최적화되어있을 테니, AWS를 사용할 입장에서 안 쓸 이유가 없다...

그리고 사실 들어오자마자 추천 세팅이 되어있었다.

 

2) 인스턴스 유형 선택

원하는 컴퓨팅, 메모리, 네트워킹 또는 스토리지 요건에 맞는 인스턴스의 유형을 선택하는 건데, 이 부분에서도 프리티어로 표기되어 자동으로 세팅된 t2.micro를 사용한다.

 

3) 인스턴스 키페어 생성

키 페어를 사용해서 인스턴스에 안전하게 연결할 수 있는데, 인스턴스에 접근을 하기 위한 키로 .pem 파일로 구성되어 있다.

해당 pem파일은 재발급이 불가능하므로 잘 관리하도록 한다. 이 파일이 있어야만 EC2 인스턴스에 접근이 가능하다.

(추후에 필요하면 .ppk <-> .pem 포맷 변경이 가능하기 때문에 파일 형식에 크게 상관하지 않았다.)

 

 

4) 네트워크 설정

네트워크, 서브넷, 퍼블릭 ip 등은 AWS 서비스들의 네트워크 환경을 구성하는 건데 대량의 서버가 아니므로 여기서는 기본으로 선택한다.

그리고 방화벽(보안 그룹)은 인스턴스에 허용되는 인바운드, 아웃바운드 트래픽을 제어하는 가상 방화벽이다.

 

보안 그룹에서 SSH 트래픽 허용을 위치 무관으로 하게 된다면 실수로 .pem파일이 노출되는 순간 노출되게 된다.

가장 좋은 방법은 본인 집 ip를 기본적으로 추가하고, 집 외의 장소에서 다시 SSH 규칙에 추가하는 방식이 가장 안전한 방식이다.

 

 

5) 스토리지 구성

스토리지 = 하드디스크로 서버 용량을 정하는 단계이다.

기본값이 8GB로 설정되어 있는데, 프리티어의 최대치는 30GB까지도 가능하다.

 

 

6) 인스턴스 시작

 

 

 

7) 인스턴스 목록 확인 + 고정 IP(EIP) 할당

해당 인스턴스 상태가 실행 중으로 나타나게 되는데, 인스턴스도 결국 하나의 서버이기 때문에 해당 서버의 IP가 존재한다.

각각의 인스턴스를 생성할 때마다 새 IP를 할당하는데, 이미 생성한 인스턴스를 중지하고 다시 시작할 때에도 새 IP가 할당된다는 점이 번거롭다. 그래서 해당 인스턴스에 고정 IP를 할당하도록 한다.

 

AWS의 고정 IP는 Elastic IP(EIP)라고 하는데, 왼쪽 [네트워크 및 보안]의 탄력적 IP탭에서 탄력적 IP 주소 할당을 진행한다.

그 후 탄력적 IP가 할당되면, 탄력적 IP 주소 연결 버튼을 눌러 연결을 진행한다.

주의해야 할 점은 탄력적 IP를 생성하고 바로 EC2 서버에 연결하지 않으면 비용이 청구가 된다.

(인스턴스를 삭제할 때도 탄력적 IP도 꼭 확인하여 삭제하도록 한다.)

 

 

 

 

 

 

2. EC2 서버 접속 - MacOS & Linux (Terminal)

1) SSH 접속

AWS와 같은 외부 서버로 SSH를 접속할 땐 매번 다음과 같은 명령어를 입력해야 하는데,

ssh -i pem위치 EC2탄력적IP주소

 

쉽게 SSH접속을 할 수 있도록 ~/.ssh/로 복사하여 SSH 실행 시 자동으로 .pem 키파일을 읽도록 접속 진행하기

(.ssh does not exist 일 경우 폴더 생성 후 진행)

cp ~/Documents/0000000000000.pem ~/.ssh/

# .ssh dose not exist
mkdir .ssh
cp ~/Documents0000000000000.pem ~/.ssh/

# 확인
cd ~/.ssh
ls

복사되었다면 pem 키 권한 변경

chmod 600 ~/.ssh/pem파일이름

pem키가 있는 디렉토리(~/.ssh)에 config 파일 생성 후 Host 등록

vim ~/.ssh/config

# config 파일 수정
HOST <서비스명>
    HostName <탄력적IP주소>
    User ec2-user
    IdentityFile ~/.ssh/<pem키이름>
    
# vi 저장 후 종료
:wq

# config 파일 권한 변경
chmod 700 ~/.ssh/config

SSH 접속 확인 성공!

 

 

 

 

 

 

 

 

 

 

 

 

참고 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스

반응형

댓글