[Project] AWS RDS

do_Rang·2025년 6월 25일

Project

목록 보기
5/7

지난번에 AWS 인스턴스를 생성해 배포까지 진행했었다.
해당 프로젝트에서는 DB를 이용하는 부분이 있었기에 AWS RDS 연결에 대해 다뤄보려고 한다.

🚀 RDS 사용해보기

이번에도 참고한 블로그가 있다!


Aurora and RDS 메뉴에 들어가서 데이터베이스 생성 클릭

나는 MariaDB 최신버전을 선택했다.

프리 티어를 잊지 않고 선택해준다.

마스터 사용자 이름과 암호는 후에 코드 상에서 DB 접속할 때 필요하기 때문에 작성하고 잊지 말 것.

나는 이미 생성해 둔 인스턴스에 해당 DB를 연결할 것이기 때문에 EC2 컴퓨팅 리소스에 연결해준다.

이 외의 chartset 설정 등은 위에 언급한 블로그와 동일하게 처리했다.

🔭 코드상으로 어떻게 호출할까?

지금까지 내가 사용한 mariadb 모듈화 코드는 다음과 같다.

import mariadb from 'mysql2/promise';
import dotenv from 'dotenv';
import path from 'path';
dotenv.config({ path: path.resolve(__dirname, '../.env') });

// db 연결 정보
const pool = mariadb.createPool({
  host: process.env.DB_HOST,
  port: process.env.DB_PORT ? parseInt(process.env.DB_PORT) : 3306,
  user: process.env.DB_USER,
  password : process.env.DB_PASSWORD,
  database: 'quizchat',
  dateStrings : true
});

export default pool;

여기서 host, port, user, password를 내가 새로 생성한 RDS에 맞게 작성해주면 된다.

user와 password는 위에서 작성했던 마스터 이름과 암호이다.
port는 기본적으로 3306인데 본인 환경에 맞는 것으로 선택하자.

host는 RDS의 엔드포인트를 입력해준다.

😎 로컬에서 접속하고 싶다면?

나는 EC2 인스턴스와 RDS를 바로 연결했기 때문에 로컬 환경에서는 해당 엔드포인트로 접속할 수 없다. 하지만 테스트는 해야하기 때문에..

이럴 때 필요한 것이 터널링이다.

서버 컴퓨터에 접속할 때와 마찬가지로 pem파일이 위치한 곳에 이동해서 다음 명령어를 입력한다.

ssh -i pem파일명 -N -L 로컬포트:RDS엔드포인트:RDS포트 EC2유저명@EC2퍼블릭IP

내가 로컬 환경에서 위에서 입력한 로컬포트로 접속하면 RDS의 포트로 연결되는 식이다. MySQL Workbench같은 툴을 이용해서 로컬 3306 포트로 접속해도 서버의 RDS로 접속할 수 있다는 사실 😉👍

이렇게 하면 수정해야 하는 부분이 있으니 체크해주자.

docker-compose

  backend: 
    build: ./backend
    extra_hosts:
      - "host.docker.internal:host-gateway"

docker 컨테이너 내부에서 host.docker.internal 이름으로 내 로컬 컴퓨터 주소를 지정해준다. 터널링은 RDS 포트와 내 로컬 포트 사이에 이루어졌기 때문에 docker가 내 로컬 주소를 알고 있을 필요가 있다.

.env

.env의 DB_HOST 주소도 수정해주자. docker-compose에서 지정한 변수를 그대로 가져온다.

DB_HOST=host.docker.internal

😉 결론

  • 배포된 프로젝트에 DB까지 연결하니 너무 뿌듯하다.
  • docker 내부에서 터널링을 하는 방법도 있을까? 다음에 알아보자.
profile
공부하자

0개의 댓글