핵심
1) RDS 인스턴스를 생성하고,
2) Colab이 접근할 수 있도록 네트워크(보안 그룹)를 설정하는 것
AWS 관리 콘솔에 로그인한 후 RDS 서비스로 이동
'데이터베이스 생성'을 클릭합니다.
'표준 생성'을 선택하고 엔진 옵션에서 'PostgreSQL'을 선택
'템플릿' 섹션에서 '프리 티어'를 선택
(테스트 목적일 경우 비용 절감을 위해 권장)
'설정' 섹션에서 다음을 입력합니다.
'스토리지' 및 '인스턴스 구성'은 프리 티어 기본값을 유지할 수 있습니다.
'연결' 섹션에서 '퍼블릭 액세스' 옵션을 '예'로 선택합니다.
[중요] 이 옵션을 '아니요'로 두면 Colab과 같은 외부 인터넷 환경에서 RDS에 절대 연결할 수 없습니다.
'데이터베이스 인증'은 '암호 인증'을 그대로 둡니다.
'추가 구성' 섹션에서 '초기 데이터베이스 이름'을 설정합니다. (스크립트의 dbname에 해당, 예: dvdrental)
'데이터베이스 생성'을 클릭합니다. 생성까지 몇 분 정도 소요.
인스턴스 생성이 완료되면, 이제 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을 사용하는 것이 가장 간편합니다.
'규칙 저장'을 클릭합니다.
이제 모든 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)' 기능을 사용하여 암호를 안전하게 관리하는 것을 권장합니다. (왼쪽 '키' 모양 아이콘)