[AWS] 프리티어로 EC2 인스턴스 생성 및 SSH로 접속하기 / EC2와 RDS 연결하기

peace w·2024년 11월 6일
post-thumbnail

AWS EC2 인스턴스와 RDS 인스턴스를 프리티어로 생성하고 SSH로 EC2에 접속하게 하는 방법을 정리한다.
프리티어로 개설하기 위해 온갖 생쇼를 다 했기에... 다른 사람들에게도 이 포스트가 도움이 되길 바란다!

EC2 생성

이미 사용중이라 화면 좌측에 프리티어 사용 중이라고 뜨는 상태이다.
좌측의 화면은 생성하고 바로는 표시되지 않는다.
나는 EC2 신청 직후, 사용 중인 프리티어가 없다고 뜨길래 프리티어로 생성이 제대로 안 되었을까봐 엄청 겁먹었는데 원래 하루 정도는 소요되는 것 같다. 청구서도 하루 뒤에 볼 수 있으니 유의하자.

처음 EC2를 개설할 때에는 상단바에서 리전 설정을 아시아 태평양(서울) 로 변경하고 인스턴스 시작 버튼을 눌러 인스턴스를 개설한다.

AMI(Amazon Machine Image)
Amazon EC2 인스턴스를 설정하고 부팅하는 데 필요한 소프트웨어를 제공하는 이미지

인스턴스의 이름을 설정하고 AMI를 지정한다. 나는 Amazon Linux로 진행했으나 다시 개설한다면 Ubuntu로 진행할 것 같다. 각 AMI마다 유저명과 실행 가능한 명령어가 달라지므로 잘 알아보고 선택하는 것을 추천한다.
(※ 예 : Linux 유저명 : ec2-user, Ubuntu 유저명 : ubuntu
Linux 명령어 : yum, Ubuntu 명령어 : apt-get)

해당 AMI중에서도 프리티어 사용 가능이라고 적혀있는 것을 선택한다.


인스턴스 유형도 프리티어 사용가능한 것(t2.micro 뿐임)으로 선택해준다.


인스턴스 접속을 위해서는 키 페어가 반드시 필요하다. 새 키 페어 생성을 클릭하여 키 페어를 생성한다. 키 정보가 유출되지 않도록 주의해서 관리해야 한다.


기존에 생성해둔 보안그룹을 선택하거나, 새로운 보안그룹을 생성할 수 있다.


프리티어에서는 최대 30gb의 스토리지를 사용할 수 있다

고급 세부 정보는 변경하지 않고 인스턴스 시작을 눌러 새로 인스턴스를 생성한다.

처음 생성하고 몇 분정도 소요되며, 생성 중에는 인스턴스의 상태가 대기 중으로 표시된다.

EC2 보안그룹 편집

최초 생성 시, SSH 연결을 위한 22 포트만 존재하는데 Spring boot 연결을 위해 8080 포트와, HTTP 80 포트를 추가해준다.

탄력적 IP 할당

AWS EC2는 매번 서버를 시작하고 종료할 때마다 새로운 IP가 할당되므로 탄력적 IP를 할당받아야한다. EC2 서버 하나에 탄력적 IP 하나는 프리티어로 사용가능하다. 단, 탄력적 IP를 생성하고 EC2 서버에 연결하지 않는다면 요금이 부과되므로 주의하자.

EC2 탭 > 탄력적 IP > 탄력적 IP 주소 할당 을 눌러서 진행한다.

기본 설정대로 생성하고 탄력적 IP 주소 연결을 클릭한다.

앞서 생성한 인스턴스에 탄력적 IP를 연결한다.
그러고 EC2 인스턴스의 퍼블릭 IPv4 주소를 확인해보면 방금 생성한 탄력적 IP 주소로 연결되어 있는 것을 확인할 수 있다.

로컬에서 EC2 서버 접속

설치된 git bash로 접속을 진행한다.
우선 홈 디렉토리에 .ssh 디렉토리를 만들고 생성해둔 키 페어를 .ssh 디렉토리로 복사한다.
복사한 키 권한을 바꿔주고, vim 명령어로 config 파일을 생성한다.

vim 명령어 사용 시

  • i키를 눌러 insert를 진행하고
  • 입력이 끝났을 땐 esc 키를 누르고 :eq를 입력하여 종료한다.

config 파일에는 접속 시 필요한 호스트 정보가 들어간다.

Host nnzz
		Hostname 탄력적주소IP
        User  ec2-user(Ubuntu 사용자라면 ubuntu)
        IdentityFile ~/.ssh/nnzz-key.pem

ssh [설정한 호스트] 를 입력해서 접속하면 되는데, 첫 접속시에는 항상 신뢰여부를 묻는다. yes 를 입력하면 연결해주지만 known hosts에 등록해둘것을 경고한다.

ssh-keyscan 명령어를 통해 known_hosts 파일을 생성해서 등록한다.

ssh-keyscan -t rsa [탄력적IP주소] >> known_hosts

JDK 설치

프로젝트에서는 Amazon Corretto 17버전을 사용하고 있어서 동일한 버전으로 설치해주었다.

ec2 생성 시 선택한 AMI가 Amazon Linux 2023 버전인데 이 버전은 yum 명령어 뿐만 아니라 dnf 명령어도 사용 가능하다. 초기 세팅할 때, 명령어 때문에 애를 먹었는데 노트북에서 새롭게 해당 환경을 세팅하기 위해 다시 진행하면서 dnf 명령어를 사용하니 한번에 설치되었다.

ssh로 접속 후에 아래처럼 입력해서 Amazon Corretto 17을 설치한다.

sudo dnf install java-17-amazon-corretto-devel.x86_64

다운로드 받을 때 y/n으로 묻는데 y를 누르면 계속 진행한다.

사진처럼 뜨면 설치완료된 것.

RDS 생성



표준생성, PostgreSQL, 16.3버전을 선택했다.
RDS 확장 지원 활성화는 유료 오퍼링이므로 선택하지 않았다.


템플릿을 프리티어로 선택하게 되면 가용성 및 내구성은 제한된다. 과금할 거 아니니 이렇게 진행한다.


데이터베이스 이름과 마스터 사용자 이름, 비밀번호를 설정한다.
설정한 이름과 비밀번호는 나중에 필요하므로 기억해둬야한다. 이름은 기본 설정인 postgres 그대로 진행했다.


인스턴스 구성의 경우 db.t4g.micro로 진행했다.


스토리지는 기본 설정이 범용 SSD(gp3)이라 이대로 생성했는데 다음날 청구서를 보니
$0.131 per GB-month of provisioned GP3 storage running PostgreSQL 로 청구된 것을 확인할 수 있었다..

gp2로 바꾸었더니 추가로 청구된 것은 없었다. 프리티어로 생성할 거라면 gp2로 생성하자.


스토리지 자동 조정의 경우 반드시 체크 해제해주어야 한다. 체크 시 프리티어여도 과금 대상이다.


EC2 서버와 RDS를 연결해서 사용할 것이므로 EC2 컴퓨팅 리소스에 연결을 체크하고 연결할 EC2 인스턴스를 선택해준다.


서브넷 그룹이나, VPC 보안 그룹은 미리 생성해둔 게 있다면 기존 항목을 선택할 수 있다. 새로 생성도 가능하다.
퍼블릭 액세스의 경우 EC2 컴퓨팅 리소스에 연결 선택 시 자동으로 아니오에 체크된다. 퍼블릭 액세스 못 하는 거 아니냐고 걱정할 필요 없다. 데이터베이스도 ssh 통해서 연결하면 된다.


가용영역의 경우, 이미 개설한 ec2 인스턴스와 연결하게 되면 ec2 인스턴스가 사용하는 리전 지역으로 연결해준다.

※ 주의
rds를 생성할 때, 아무리 서울 지역으로 생성했더라도 ec2에 연결하지 않고 생성을 끝내면, 가용영역이 달라져 나중에 ec2에 연결되지 않을 수 있으므로 반드시 생성할 때 연결하는 것을 추천한다.

인증기관과 데이터베이스 포트는 기본값으로 둔다. 데이터베이스 포트의 경우, 각 데이터베이스 별로 기본 포트 값이 표시된다. postgresql은 5432 포트를 사용한다.


따로 설정하지 않고 넘어간다.



모니터링과 추가구성의 자동 백업, 삭제 방지는 전부 체크 해제 해주었다.


월별 추정 요금을 알려주기는 하나, 나도 20gb의 범용 스토리지는 괜찮으니까 gp3도 무료구나 싶었는데 아니었다. 되도록이면 요금 페이지에서 자세한 설명을 보고 진행하는 것을 추천한다. 불안하다면 생성하고나서 매일 같이 청구서를 들여다보고 과금될 때마다 하나씩 변경하자. 내가 그랬다

설정을 완료하고 데이터베이스 생성을 클릭하고 완전히 생성될 때까지 기다린다.

DBeaver나 Intellij에 DB 연결하기

생성한 데이터베이스 종류의 맞게 선택하고 연결을 설정한다.

  • 호스트에 생성된 RDS 인스턴스의 엔드포인트를 복사해 넣는다.
  • UsernamePassword에는 RDS 설정시 넣은 사용자명과 비밀번호를 넣어준다.

  • SSH 탭으로 넘어와서 Host/IP 에 EC2에서 설정한 탄력적 IP를 넣어준다.
  • 포트는 22, User Name은 EC2 인스턴스를 생성할 때, 선택한 AMI에 따라 유저명이 달라진다.
  • Authentication Method는 Public Key를 선택하고 Private Key를 키 페어 파일로 지정한다.
  • Test Connection 을 클릭해 연결이 잘 되는지 확인하고 필요한 드라이버를 다운받은 뒤, 최종적으로 연결한다.

Intellij에 DB를 연결할 때도, RDS의 엔드포인트를 호스트로 넣고, SSH로 통신할 때 키 페어를 사용하면 된다.

한국시간으로 바꾸기

EC2 의 기본 시간은 UTC이므로 한국 표준시인 KST로 바꾸고 작업해야한다.
https://velog.io/@peace_e/EC2-linux-한국-시간으로-서버-시간-변경하기

profile
더 성장하자.

0개의 댓글