Gemini의 응답
대회 전 마지막으로 머릿속에 완벽하게 집어넣을 수 있도록, **'DB와 연동되는 AWS Lambda 모듈(패키지)'**의 A to Z를 실전 체크리스트 형태로 총정리해 드립니다.
이 4단계 흐름만 머릿속에 그려지면 어떤 변형 과제가 나와도 당황하지 않으실 겁니다!
1. 📦 1단계: 모듈(코드)의 뼈대와 패키징
단순히 코드를 짜는 것을 넘어, AWS가 이해할 수 있는 하나의 패키지로 만들어야 합니다.
- 핸들러 (입구): AWS가 코드를 실행하는 진입점입니다.
lambda_function.py 파일의 lambda_handler(event, context) 구조를 유지하고, 콘솔 설정과 이름이 일치하는지 확인하세요.
- 외부 라이브러리:
pymysql, requests 등은 람다에 기본 내장되어 있지 않습니다.
- 해결책: 폴더에 직접 설치해서 코드와 함께 .zip 파일로 압축하여 올리거나, 대회에서 제공된 Lambda Layer를 연결해야 합니다.
2. 🛡️ 2단계: 보안과 유연성 (가산점 포인트)
코드 안에 민감한 정보가 노출되면 안 됩니다.
- 하드코딩 제거: 파일에 적힌
password = "1234" 같은 값은 지우세요.
- 환경 변수 활용: 파이썬의
os.environ.get('DB_USER') 모듈을 사용해 코드를 깔끔하게 만들고, 실제 값은 AWS Lambda 콘솔의 [환경 변수] 탭에 입력하세요.
3. 🛣️ 3단계: 네트워크와 권한 (통과 필수 조건)
코드가 완벽해도 길이 막혀있으면 에러가 납니다.
- VPC & 서브넷: 람다가 RDS(데이터베이스)에 접속해야 한다면, 람다를 RDS와 같은 집(VPC) 안으로 들여보내야 합니다.
- 보안 그룹 (Security Group): RDS의 문지기(인바운드 규칙)에게 "우리 람다(람다의 보안 그룹 ID)가 3306 포트로 들어오면 문을 열어줘"라고 설정해야 합니다.
- IAM 역할 (Role): 람다가 Secrets Manager나 S3를 읽어야 한다면, 람다의 '실행 역할'에 해당 서비스에 접근할 수 있는 권한(Policy)이 부여되어야 합니다.
4. ⏱️ 4단계: 안정성 튜닝
대회 채점 시스템은 가차 없습니다. 사소한 설정 하나로 타임아웃이 발생할 수 있습니다.
- 제한 시간 (Timeout): 기본 3초는 DB 접속에 너무 짧습니다. 10초~30초로 넉넉하게 늘려두세요.