AWS RDS-코랩 연동

김규원·2025년 12월 13일

DB

목록 보기
17/22
post-thumbnail

핵심

1) RDS 인스턴스를 생성하고,
2) Colab이 접근할 수 있도록 네트워크(보안 그룹)를 설정하는 것

1. AWS RDS PostgreSQL 인스턴스 생성

AWS 관리 콘솔에 로그인한 후 RDS 서비스로 이동
'데이터베이스 생성'을 클릭합니다.
'표준 생성'을 선택하고 엔진 옵션에서 'PostgreSQL'을 선택

'템플릿' 섹션에서 '프리 티어'를 선택
(테스트 목적일 경우 비용 절감을 위해 권장)

'설정' 섹션에서 다음을 입력합니다.

  1. DB 인스턴스 식별자: my-db 등 원하는 이름을 입력합니다.
  2. 마스터 사용자 이름: 스크립트의 user에 해당합니다. (예: postgres)
  3. 마스터 암호: 스크립트의 password에 해당합니다. (예: 비번)

'스토리지' 및 '인스턴스 구성'은 프리 티어 기본값을 유지할 수 있습니다.

'연결' 섹션에서 '퍼블릭 액세스' 옵션을 '예'로 선택합니다.

[중요] 이 옵션을 '아니요'로 두면 Colab과 같은 외부 인터넷 환경에서 RDS에 절대 연결할 수 없습니다.

'데이터베이스 인증''암호 인증'을 그대로 둡니다.

'추가 구성' 섹션에서 '초기 데이터베이스 이름'을 설정합니다. (스크립트의 dbname에 해당, 예: dvdrental)

'데이터베이스 생성'을 클릭합니다. 생성까지 몇 분 정도 소요.

2. RDS 보안 그룹 설정

인스턴스 생성이 완료되면, 이제 Colab 서버가 이 DB에 접속할 수 있도록 "방화벽"을 열어줘야 합니다. 이것이 보안 그룹 설정입니다.

RDS 대시보드에서 방금 생성한 데이터베이스 인스턴스를 클릭합니다.

'연결 & 보안' 탭을 클릭합니다.

'보안' 섹션에 있는 'VPC 보안 그룹' 링크를 클릭합니다. (보통 rds-launch-wizard 같은 이름입니다.)

페이지 하단의 '인바운드 규칙' 탭을 선택하고 '인바운드 규칙 편집' 버튼을 클릭합니다.

'규칙 추가' 버튼을 클릭하고 다음 정보를 입력합니다.

유형: PostgreSQL (선택하면 포트가 5432로 자동 설정됩니다.)
프로토콜: TCP
포트 범위: 5432
소스: Anywhere-IPv4 (또는 0.0.0.0/0)

[보안 경고] 0.0.0.0/0은 전 세계 모든 IP의 5432 포트 접근을 허용합니다. 테스트용으로만 사용하고, 실제 운영 시에는 절대 사용하면 안 됩니다.

참고: Google Colab은 IP가 계속 변경되므로 특정 IP를 고정하기 어렵습니다. 테스트 시에는 0.0.0.0/0을 사용하는 것이 가장 간편합니다.

'규칙 저장'을 클릭합니다.

3. 코랩(Colab)에서 스크립트 실행

이제 모든 AWS 설정이 완료되었습니다. Colab으로 돌아가 스크립트를 실행할 차례입니다.

RDS 엔드포인트 확인: RDS 인스턴스 세부 정보의 '연결 & 보안' 탭에서 '엔드포인트' 주소를 복사합니다. (예: my-db.xxxx.ap-northeast-2.rds.amazonaws.com)

Colab에 psycopg2 설치: Colab에는 psycopg2가 기본 설치되어 있지 않을 수 있습니다. 코드 셀 상단에 다음 명령을 추가하여 실행합니다.

!pip install psycopg2-binary

Python 스크립트 정보 업데이트: 제공하신 스크립트의 --- AWS RDS 정보로 변경 --- 부분을 실제 정보로 채워 넣습니다.

import psycopg2
from psycopg2 import OperationalError

try:
    conn = psycopg2.connect(
        # --- AWS RDS 정보로 변경 ---
        host='여기에 1번에서 복사한 RDS 엔드포인트 주소', # 예: my-db.xxxx.ap-northeast-2.rds.amazonaws.com
        port=5432,                          
        dbname='1번에서 설정한 초기 DB 이름', # 예: dvdrental
        user='1번에서 설정한 마스터 사용자 이름', # 예: postgres
        password='1번에서 설정한 마스터 암호',
        # ---------------------------
        connect_timeout=10
    )
    print("✅ AWS RDS PostgreSQL 연결 성공!")

    with conn.cursor() as cur:
        # dvrental 샘플 DB가 있다면 public.actor 테이블 수 확인
        cur.execute("SELECT COUNT(*) FROM actor;") 
        print("actor 테이블의 총 행 수:", cur.fetchone()[0])

except OperationalError as e:
    print("❌ AWS RDS 연결 실패.")
    print("   1. RDS 엔드포인트 주소와 포트가 올바른지 확인하세요.")
    print("   2. RDS 보안 그룹 인바운드 규칙이 0.0.0.0/0 (또는 Colab IP)를 허용하는지 확인하세요.")
    print("   3. RDS 인스턴스의 '퍼블릭 액세스'가 '예'로 되어있는지 확인하세요.")
    print(e)

finally:
    try:
        conn.close()
        print("🔌 연결 종료")
    except:
        pass

이 단계를 모두 완료하면 Colab에서 AWS RDS로의 연결이 성공적으로 수행됩니다.

⚠️ 중요 보안 참고 사항

보안 그룹: 테스트가 끝나면 보안 그룹의 인바운드 규칙에서 0.0.0.0/0 소스를 반드시 삭제하세요.

비밀번호 관리

  • Colab 노트북에 데이터베이스 비밀번호를 직접 하드코딩하는 것은 위험합니다. Google Colab의 '비밀(Secrets)' 기능을 사용하여 암호를 안전하게 관리하는 것을 권장합니다. (왼쪽 '키' 모양 아이콘)
profile
행복한 하루 보내세요

0개의 댓글