본문 바로가기
프로젝트

aws 배포 - EC2, RDS, ElastiCache

by jucheol 2025. 3. 14.

https://every-word.tistory.com/25

 

aws 배포 - vpc 생성하기

이번에 진행하는 프로젝트를 aws 에 배포하려고 한다.이런식으로 aws ec2에 프로젝트 도커 이미지를 저장하고, rds와 elasticache를 사용하려고 한다.그러기 위해서 AWS 리소스(RDS, EC2, ElastiCache 등)를 안

every-word.tistory.com

저번에 vpc를 생성한 다음에 이번에는 spring boot 도커 이미지를 올릴 EC2, MySQL로 사용할 RDS, Redis로 사용할 ElastiCache를 설정하려고 한다.

 

EC2 생성

인스턴스 생성을 클릭

ec2 이름을 작성해 준다

os 환경으로 ubuntu를 설정해 주고, Amazon Machine image를 프리 티어 사용 가능한걸로 선택해 준다. 

키 페어를 선택해 주는데 없는경우 오른쪽의 "새 키 패어 생성"을 클릭하여 새 키를 만들어 준다.

Github Actions에서 ec2 ssh에 docker hub 이미지를 pull 받도록 하기 위해서 .pem 형식을 선택했다.

자신의 개발 상황에 맞춰 키를 선택하면 될 것 같다.

네트워크 설정에서는 저번에 만들어준 vpc를 사용해야 한다.

지금 설정된 vpc가 사용하려는 vpc가 아니라면 편집을 클릭해서 vpc를 바꿔준다

보안 그룹은 ec2에서 사용하려고 만든게 있다면 선택하고 없다면 "보안 그룹 생성"을 클릭하여 새로 만들면 된다

보안 그룹 이름을 지정하고, 설명을 작성해 준다

3개의 인바운드 보안 그룹 규칙을 생성해 준다.

ssh는 ec2의 ssh에 접속할 수 있는 ip를 지정할 때 사용한다. 0.0.0.0/0은 모든 ip 접속을 허용한다는 의미이다

HTTP는 인터넷으로 접속할 수 있는 ip를 지정한다. 지금은 모든 ip 허용, 80 포트 접속을 허용한다. (포트는 spring boot 프로젝트에 열린 포트에 따라 바꿔준다)

HTTPS는 인터넷으로 접속할 수 있는 ip를 지정한다. 지금은 모든 ip 허용, 443 포트 접속을 허용한다.

이후 인스턴스 시작을 클릭하면 ec2가 생성된다.

 

RDS 생성

RDS 탭에서 데이터베이스 생성을 클릭한다

표준 생성을 선택

사용하려는 DB와 버전을 선택한다. 

프리티어를 선택해 준다

DB 이름, 사용자 이름, 암호를 작성해 준다. 로컬에서 사용하는 MySQL의 사용자 이름, 암호와 똑같이 설정해 줬다.

t3.micoro를 선택해 준다

스토리지 유형과 할당된 스토리지는 기본으로 사용한다.

이때 스토리지 자동 조정 활성화는 추가 요금이 발생할 수 있기 때문에 선택 해제를 해줘야 한다. 

보안그룹을 사용해 ec2와 연결해줄 예정이라 "ec2 컴퓨팅 리소스에 연결 안 함"을 선택한다

vpc는 처음에 생성했던 것을 선택한다.

퍼블릭 엑세스는 외부에서 연결하는 주소를 할당해준다. 이번에는 내부적으로 ec2와 연결할 계획이기 때문에 아니오를 선택한다.

DB에 대한 미리 생성해둔 보안그룹이 없다면 새로 생성을 클릭하고 보안 그룹 이름을 작성해 준다. 세부적인 설정은 나중에 진행

포트는 3306 기본 포트로 설정했다

이후 하단의 추가 구성을 클릭하여 초기 데이터베이스 이름을 입력하고, 백업, 암호화, 유지관리 설정을 해제한다. (백업은 추가 요금 발생할 수 있음)

이때 초기 데이터베이스의 이름은 데이터베이스의 스키마 이름이 된다.

설정을 다 마쳤으면 하단 주황색 데이터베이스 생성을 클릭한다.

 

RDS 보안 그룹 설정

데이터베이스에서 방금 생성한 db를 클릭한다.

보안 그룹을 클릭

보안그룹을 클릭하고 인바운드 규칙 -> 인바운드 규칙 편집을 클릭

유형은 MYSQL/Aurora를 선택하고, 소스는 ec2 보안그룹을 클릭한다.

이렇게 하면 EC2에만 접근 권한 부여, 외부는 차단할 수 있다.

 

ElastiCache 생성

 

ElastiCache로 이동하여 지금 시작을 클릭하고 redis oss를 선택한다.

 

자체 캐시 설계, 클러스터 캐시를 선택한다. 비활성화됨은 기본 설정을 유지한다.

클러스터 이름을 작성해준다

AWS 클라우드를 선택하고, 다중 az, 자동 장애 조치는 선택 해제한다.

자신이 사용할 redis 버전을 선택한다.

노드 유형은 t3.micro를 선택하는데 잘못 선택하면 요금이 부과될 수 있다.

복제본 개수도 0으로 설정한다.

elaticache도 마찬가지로 서브넷 그룹을 미리 생성하지 않았다면 새 서브넷 그룹 생성을 클릭한다.

이름을 작성한 다음, 처음 만들었던(ec2, rds 모두 연결되어 있는 vpc) vpc를 선택한다. 

보안과 백업 모두 설정 해제 한다.

이후 다음을 클릭하여 설정을 확인하고 생성을 클릭한다.

 

ElatiCache 보안 그룹 설정

방금 생성한 elaticahe를 선택한다

하단 보안 그룹 탭에서 보안 그룹을 선택한다.

인바운드 규칙 편집을 클릭

유형은 사용자 지정 TCP를 선택하고 포트 범위는 아까 redis 포트를 입력해 준다.

소스는 rds와 같이 ec2의 보안 그룹을 선택해 ec2와 통신할 수 있도록 해준다.

 

https://tao-tech.tistory.com/20

 

[AWS] EC2, RDS, ElastiCache 인스턴스 생성부터 배포까지

애플리케이션의 안정성과 확장성을 확보하기 위해 클라우드 서비스를 활용하고 있습니다. AWS`Amazon Web Services`는 그중에서도 가장 널리 사용되는 클라우드 플랫폼으로, 강력하고 유연한 인프라

tao-tech.tistory.com

toa님 블로그를 참고하여 진행했습니다