Django에서 SSH 터널링(EC2)으로 RDS 연동하기

2023. 5. 5. 19:19·Develop/Django
728x90
SMALL

SSH 터널링

SSH(Secure Shell) 프로토콜을 사용하여 네트워크 상의 다른 컴퓨터와 안전하게 통신할 수 있는 방법이다.

 

주로 두 가지의 유형이 있는데

1. 로컬 포트 포워딩

2. 리모트 포트 포워딩

 

현재 글에서는 로컬 포트 포워딩으로 진행될 것이다.

서버는 EC2의 서버가 될 것이고, 데이터베이스는 RDS가 될 것이다.

서버는 Ubuntu를 사용 중이다.

 

설치

1) 라이브러리 설치

pip install sshtunnel

 

2) 라이브러리 import

from sshtunnel import SSHTunnelForwarder

 

3) Setting.py의 Database섹터에 SSH 터널 설정

server = SSHTunnelForwarder(
    (Environ.SSH_TUNNEL_HOST, Environ.SSH_TUNNEL_PORT),
    ssh_username=Environ.SSH_TUNNEL_USERNAME,
    ssh_pkey=Environ.SSH_TUNNEL_PKEY,
    remote_bind_address=(Environ.RDS_HOST, Environ.RDS_PORT)
)

SSH_TUNNEL_HOST: EC2 퍼블릭 주소(탄력적 IP를 받아서 기입했다.)
SSH_TUNNEL_PORT: EC2 서버 포트
SSH_TUNNEL_USERNAME: EC2 서버의 이름
SSH_TUNNEL_PKEY: EC2를 생성할 때 받았 던 .pem 파일의 경로
remote_bind_address: RDS의 엔드포인트와 포트

 

4) SSH 터널 시작

server.start()

 

5) 데이터베이스 설정

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': Environ.RDS_DB_NAME,
        'USER': Environ.RDS_USERNAME,
        'PASSWORD': Environ.RDS_PASSWORD,
        'HOST': '127.0.0.1',
        'PORT': server.local_bind_port,
    }
}

RDS_DB_NAME: 기본 스키마 이름
RDS_USERNAME: RDS를 만들 때 생성한 어드민 이름
RDS_PASSWORD: RDS를 만들 때 생성한 어드민 패스워드
HOST: 로컬 주소
PORT: 로컬 포트로 터널링 된 포트 사용

 

728x90
SMALL
저작자표시 비영리 변경금지 (새창열림)

'Develop > Django' 카테고리의 다른 글

Django 프로젝트를 위한 Docker 환경 구성 가이드  (0) 2023.04.16
Django (페이징 뷰) 검색 페이지 기능 구현하기  (0) 2023.03.24
Django View에서 HTML 태그 넣어보기 - 8  (0) 2023.02.27
Django URL reverse / URL name - 7  (0) 2023.02.27
Django 리다이렉트(Redirect) - 6  (0) 2023.02.26
'Develop/Django' 카테고리의 다른 글
  • Django 프로젝트를 위한 Docker 환경 구성 가이드
  • Django (페이징 뷰) 검색 페이지 기능 구현하기
  • Django View에서 HTML 태그 넣어보기 - 8
  • Django URL reverse / URL name - 7
동석해요
동석해요
공부하고 싶은게 많은, 사소한 IT 지식들 공유
    250x250
  • 동석해요
    개발로 자기계발
    동석해요
  • 전체
    오늘
    어제
    • 분류 전체보기 (226)
      • Develop (126)
        • 기초지식 (12)
        • FastAPI (102)
        • Django (11)
      • Database & Data (62)
        • 기초지식 (16)
        • MySQL (29)
        • PostgreSQL (8)
        • 데이터 분석 (9)
      • 인공지능 (11)
        • PyTorch (9)
      • Cloud (8)
        • AWS (4)
        • GCP (2)
      • 버그처리 (14)
      • 회고 & 일상 (5)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
동석해요
Django에서 SSH 터널링(EC2)으로 RDS 연동하기
상단으로

티스토리툴바