[AWS] - EC2 설정 + RDS 연결

Hunter Joe·2026년 1월 18일

혹시라도 이거 따라하시는 분 막히시면 알려주세요
hunterjoe9999@gmail.com or 댓글 환영입니다

1. EC2 인스턴스 생성

  • amzaon linux - 2023 사용
  • t3.micro

무료 플랜은 이거 사용하면 됨
우분투는 시간당 0.016이라 패스 (극강의 효율 가즈아)

  • 키를 생성하면 <key pair>.pem이런걸 다운로드 하는데
    AWS 키페어는 EC2 인스턴스에 처음 접속하기 위한 마스터 키
    -> 나중에 git action에 ssh 연결할 떄 쓰임

2. 접속

# .pem 파일 드래그 앤 드랍해서 .pem 파일 위치 넣기
chmod 400 <keypair-경로.pem>

# 퍼블릭 DNS을(를) 사용하여 인스턴스에 연결
ssh -i <keypair-경로.pem> ec2-user@내-퍼블릭-IP주소>

chmod 400
chmod 400은 파일 소유자에게만 읽기(read) 권한을 부여하고, 그룹 및 다른 사용자에게는 어떠한 권한도 주지 않는(권한 없음) 설정

ec2-linux-shell

일단 여기까지 왔으면 아래 사진처럼 접속이 됨

docker, docker-compose, git이 필요함
설정하는건 다음과 같음


sudo dnf update -y # 보안 패치 및 버그 수정의 이유로 패키지 업데이트 
sudo dnf install -y docker # Docker 엔진을 설치
sudo systemctl start docker # Docker 서비스 시작 
sudo systemctl enable docker # EC2 재부팅해도 Docker가 자동으로 시작되게 설정
sudo usermod -aG docker ec2-user # ec2-user를 docker 그룹에 추가
sudo dnf install -y docker-compose-plugin #  Docker Compose 플러그인 설치
docker compose version # docker-compose 버전 확인
sudo dnf install -y git # 깃 설치
git --version # 깃 버전 확인 

sudo usermod -aG docker ec2-user
역할: ec2-user를 docker 그룹에 추가
왜 필요? Docker 명령어는 기본적으로 root 권한 필요
효과: sudo 없이도 docker 명령어 사용 가능

# 이 명령 전
sudo docker ps  # sudo 필요

# 이 명령 후 (재로그인 필요)
docker ps 

⚠️ 주의: 적용하려면 로그아웃(exit) 후 재로그인 필요w
재로그인: ssh -i <keypair.pem> ec-user@퍼블릭 ip주소

git 설정 (레포지토리가 private 일때만)

# ec2 터미널에서 
ssh-keygen -t ed25519 -C "내이메일@example.com"

엔터 3번 -> cat ~/.ssh/id_ed25519.pub(공개 키 확인 및 복사)

# 공개키는 다음과같이 생김 
`ssh-ed25519 AAAA... 내이메일@example.com`

GitHub 저장소에 키 등록

  1. 본인의 GitHub Private 저장소 페이지로 이동

  2. Settings 탭 클릭 → 왼쪽 메뉴에서 Deploy keys

  3. Add deploy key 버튼을 클릭

  4. Title: EC2-Server (본인이 알아보기 쉬운 이름)

  5. Key: 방금 복사한 문자열을 붙여넣기

  6. Add key를 눌러 저장 (Write 권한은 필요 없으므로 체크하지 않아도 됨)

이렇게 설정하면 SSH로 이제 git clone 가능

git clone (레포 복사)

1. SSH 연결 테스트 (가장 먼저 확인!)

ssh -T git@github.com
  • Hi 계정명/저장소명! You've successfully authenticated... 라고 나오면 성공

ec2의 루트 경로 [ec-user@...]에서

  • 현재 위치한 경로 알고 싶으면 : pwd
# SSH 주소!!!
git clone git clone git@github.com:계정명/저장소명.git

.env 설정

# 1. env 파일 만듦 
vi .env

# 2. `i` 를 눌러 -- INSERT -- 모드로 바꾼 뒤
.env파일 복붙 

# 파일 저장 & 나가기
Esc #키를 누름 (입력 모드 해제).
:wq # 입력 (Write and Quit).
Enter # 터미널로 돌아옵니다.

compose build requires buildx 0.17 or later

이런 경고가 뜨면
버전 업글해주면됨

mkdir -p ~/.docker/cli-plugins

curl -L https://github.com/docker/buildx/releases/download/v0.19.1/buildx-v0.19.1.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx

chmod +x ~/.docker/cli-plugins/docker-buildx

docker buildx version

RDS 연결까지

# nc(netcat) 명령어로 해당 IP와 포트 통신 확인
sudo dnf install -y nc # 설치
nc -zv <프라이빗IP> <dbport> # 확인


데이터베이스(RDS)는 일종의 '성'이고, 보안 그룹은 그 성문을 지키는 '수문장'입니다. 현재 EC2가 성 안으로 들어오려고 하지만, RDS의 수문장(default)이 막고 있는 상태입니다. 따라서 default 보안 그룹의 인바운드 규칙을 수정하여 EC2(launch-wizard-3)를 통과시켜줘야 합니다.

나는 다음과같음
default가 rds 설정할 떄 썼던거고
launch-wizard-3가 내 ec2 인스턴스에 추가한거

보안 그룹 규칙 추가 순서

  1. default

  2. 인바운드 규칙 편집: 하단 탭에서 인바운드 규칙(Inbound rules)을 선택하고, 오른쪽의 인바운드 규칙 편집(Edit inbound rules) 버튼을 누릅니다.

  3. 규칙 추가: 아래와 같이 새로운 규칙을 입력합니다.

  • 유형: PostgreSQL (선택하면 자동으로 포트 범위가 5432로 설정됩니다.)

  • 프로토콜: TCP (자동 설정)

  • 포트 범위: 5432 (자동 설정)

  1. 소스(Source): '사용자 지정'을 선택한 뒤, 옆의 입력창에 launch-wizard-3의 보안 그룹 ID를 입력합니다. (입력창을 클릭하면 목록에 sg-... (launch-wizard-3)가 나타날 텐데, 그걸 선택하는 것이 가장 정확하고 안전합니다.)

  2. 저장: 하단의 규칙 저장(Save rules) 버튼을 누릅니다.

자 이제 다시 네트워크 확인해보자

nc -zv <프라이빗IP> <dbport> # 확인
# >connected 뜨면 정상

AWS EC2 보안 그룹 확인

아까 확인하신 launch-wizard-3 보안 그룹은 현재 EC2 인스턴스의 '성벽' 역할을 합니다. 여기에 3000번 포트를 열어주는 규칙이 있는지 확인해야 합니다.

  1. AWS 콘솔 → EC2 인스턴스 목록에서 현재 실행 중인 인스턴스를 클릭합니다.

  2. 하단의 보안(Security) 탭을 누르고, 보안 그룹(Security groups) 아래에 있는 launch-wizard-3 링크를 클릭합니다.

  3. 인바운드 규칙(Inbound rules) 탭에서 인바운드 규칙 편집(Edit inbound rules)을 누릅니다.

  4. 아래 규칙을 추가하고 저장하세요.

  • 유형: 사용자 지정 TCP
  • 포트 범위: 3000
  • 소스: Anywhere-IPv4 (또는 주소창에 0.0.0.0/0 입력)
  1. 저장
profile
Async FE 취업 준비중.. Await .. (취업완료 대기중) ..

0개의 댓글