총 5단계에 걸쳐 진행할 예정이다.
- AWS EC2 + RDS 생성
- RDS table 생성
- VSCode Spring Boot 로컬 환경 서버 구축
- 로컬 서버 코드 EC2 업로드 + DNS 포워딩
- EC2, RDS 주의사항
1장. AWS EC2 + RDS 생성
1. AWS EC2 인스턴스 생성
1) EC2 대시보드 -> 인스턴스 시작 -> OS 선택

인스턴스 시작을 클릭하면 OS 리스트가 나온다. 난 우분투가 편해서 18.04 LTS 64bit 를 선택했다. CentOS는 Amazon Linux를 선택하면 된다.
2) 인스턴스 유형 선택 -> 다음 (검토 및 시작X)
.png)
인스턴스 유형 리스트가 나온다. 테스트를 위해 생성한 거라 프리 티어에서 사용 가능한 유형을 선택했다.
3) 퍼블릭 IP 자동 할당 활성화 -> 다음
.png)
외부에서 접속하기 위해 퍼블릭 IP를 활성화 시킨다.
4) 스토리지 30GB 설정(선택) -> 다음
.png)
스토리지는 로컬 PC의 디스크와 같은 저장장치를 말한다. 프리 티어는 30GB까지 사용가능하기 때문에 변경해준다.
5) 태그 설정 -> 다음
.png)
6) 보안 그룹 설정 -> 검토 및 시작
.png)
규칙을 총 3개 추가한다.
- SSH
내 PC에서 AWS EC2 터미널로 접속할 때 필요하다. "내 IP" 선택하면 내 외부 IP가 자동 지정된다. 까페와 같은 집 외에 다른 장소에서 접속할 땐 해당 장소의 IP에 대해 다시 SSH 규칙을 추가해야 접속된다.
- HTTP, HTTPS
외부에서 이 사이트의 웹서비스에 접근할 때 사용한다. (닫으면 외부에서 서비스에 접근 불가)
7) 인스턴스 시작 검토 -> 새 키 페어 생성 -> 키페어 다운로드 -> 인스턴스 시작
.png)
이 키 페어를 가지고 있어야 해당 인스턴스에 접근이 가능하다.
.png)
인스턴스가 running 상태면 성공적으로 생성된 것이다.
8) 탄력적 IP -> 탄력적 IP 주소 할당 -> 새 주소 할당
.png)
할당 버튼을 클릭하면 새 고정 IP가 할당된다.
9) 탄력적 IP 주소 연결 -> 연결할 인스턴스 지정 -> 연결
.png)
이전에 생성한 인스턴스에 고정 IP가 할당된다.
.png)
제대로 할당됐는지 확인한다.
Spring Boot 배포가 목적일 시 인바운드 규칙 추가한다.
이유 : Spring Boot 프로젝트는 8080 포트에서 실행되기 때문
10) 보안 그룹 -> 인바운드 규칙 편집
.png)
11) 인바운드 규칙 추가 -> 규칙 저장
[사용자 지정 TCP] - [8080] - [위치 무관]
규칙을 추가한다.
.png)
12) EC2 터미널 접속 설정
12–1) 다운로드한 pem파일 이동 -> 권한 변경
AWS 같은 외부 서버로 SSH 접속을 하기 위해선 매번 ssh -i pem키 외부 IP 를 입력해줘야 한다. 쉽게 SSH 접속을 할 수 있도록 설정할 것이다.
.png)
cp pem키위치 ~/.ssh
cd ~/.ssh
ls -al pem키위치
chmod 600 pem키위치
cp pem키위치 ~/.ssh
: 다운로드한 키페어 pem파일 ~/.ssh 로 복사
chmod 600 pem키
: pem 키 권한 변경
12–2) config 설정
vim config
로 편집기를 연다.
.png)
# ---------------------------- Host 접속시원하는이름
HostName 탄력적IP주소
User ubuntu
IdentityFile ~/.ssh/pem키
AWS에서 Ubuntu를 선택했다면 User는 ubuntu, 그 외는 ec2-user 로 기재한다.
Host 접속시원하는이름
: 앞으로 접속할 키값 (ex. Host abc로 등록시 ssh abc로 해당 EC2에 접속)
HostName 탄력적IP주소
: 탄력적 IP주소 입력
User 사용자이름
: Ubuntu -> ubuntu, 그 외 ec2-user
IdentityFile 이동한pem키위치
: 저장한 pem파일 위치
작성이 완료되면 :wq
입력한 후 ls -al config
로 config 파일이 생성됐는지 확인한다.
12–3) 접속 테스트
ssh springboot-test
로 접속한다. 해당 화면처럼 나오면 성공한 것이다.
.png)
2. 보안 그룹 생성 (EC2에서만 접근 가능하도록)
1) 생성한 EC2 인스턴스의 보안 그룹 확인
.png)
springboot-test 인스턴스가 속한 보안 그룹이 springboot-test인 것을 확인한다.
2) 보안 그룹 -> 보안 그룹 생성
.png)
3) 보안 그룹 이름과 인바운드 규칙 설정 -> 보안 그룹 생성
설정하는 이유 : EC2 인스턴스의 보안 그룹에서만 RDS에 접근할 수 있도록 하기 위해
- 보안 그룹 이름 : EC2-RDS Security Group
- 보안 그룹 설명(선택) : EC2-RDS Security Group
- 인바운드 규칙: [MySQL/Aurora] - [TCP] - [3306] - [사용자 지정] - [springboot-test의 보안그룹]
- MySQL DB를 사용할 것이기 때문에 포트는 3306으로 설정
.png)
3. RDS의 서브넷 그룹 설정
1) RDS -> 서브넷 그룹 -> DB 서브넷 그룹 생성
.png)
2) 서브넷 그룹 이름과 VPC 설정 -> 생성
- 서브넷 그룹 이름 : RDS Subnet Group
- 서브넷 그룹 설명(선택) : RDS Subnet Group
- VPC : springboot-test와 같은 VPC 선택
- 서브넷 추가 : 가용 영역에 있는 모든 영역 선택 (서브넷 리스트에 있는 모든 서브넷 선택)
.png)
생성된 서브넷 그룹을 확인한다.
.png)
4. DB 한글 설정을 위한 파라미터 설정
설정이유 : MySQL은 기본적으로 한글을 지원하지 않기 때문에
1) RDS -> 파라미터 그룹 -> 파라미터 그룹 생성
.png)
2) 파라미터 그룹 이름 설정 -> 생성
.png)
생성된 그룹을 선택한다.
.png)
3) 생성된 그룹 선택 -> 파라미터 편집 -> 파라미터 수정 -> 변경 사항 저장
설정 2가지를 변경한다.
- character_set_client : utf8
- collation_connection : utf8_general_ci
.png)
.png)
5. RDS 생성
EC2 에서만 접속 가능하도록 생성할 것이다.
.png)
1) RDS -> 데이터베이스 생성
2) 데이터베이스 옵션 선택 (프리티어 기준) -> 데이터베이스 생성
초기 값은 default라고 따로 표시함
(필수) 값은 반드시 변경하고 가야함
- 데이터베이스 생성 방식 : 표준 생성
- 엔진 옵션
- 엔진 유형 : MySQL
- 에디션 : MySQL Community
- 버전 : MySQL 5.7.22
- 템플릿 : 프리 티어
- 설정
- DB 인스턴스 식별자 : rds-test
- 마스터 사용자 이름 : admin (default)
- DB 인스턴스 크기 : 버스터블 클래스 (default)
- 스토리지
- 스토리지 유형 : 범용(SSD) (default)
- 할당된 스토리지 : 20GB (default)
- 스토리지 자동 조정 활성화 : 비활성화
- 연결
- Virtual Private Cloud(VPC) : Default VPC (default)
- (필수) 서브넷 그룹 : rds subnet group (3번에서 생성한 서브넷 그룹 선택)
- 퍼블릭 액세스 가능 : 아니요 (default)
- (필수) VPC 보안 그룹
기존 보안 그룹 > ED2-RDS Security Group (2번에서 생성한 보안 그룹 선택)
- 가용 영역 : 기본 설정 없음 (default)
- 데이터베이스 포트 : 3306 (default)
- 데이터베이스 인증
암호 및 IAM 데이터베이스 인증 (암호 인증 해도 상관X)
- 추가 구성
- 초기 데이터베이스 이름 : test
- (필수) DB 파라미터 그룹 : korean-parameter
- 그 외 모두 default값 사용
.png)
3) RDS 접속 테스트
생성된 RDS의 엔드포인트와 포트를 확인한다.
.png)
MySQL 접속 명령어
mysql -p -u [마스터사용자이름] -p [포트] - host [엔드포인트]
ex)
mysql -p -u admin -P 3306 - host rds-test.coysrflpjez2.us-west-2.rds.amazonaws.com
EC2 인스턴스에서 접속되는지 확인한다. (접속하는 방법은 다음 장에서 설명할 것이다.)
.png)
자, 이로써 드디어 AWS EC2에 AWS RDS을 연동했다. 다음 장에선 EC2에 Spring Boot를 배포하는 법에 대해 알아보도록 할 것이다. 🚀 피드백 환영합니다! 🚀