영화 추천 챗봇 구축: AWS Bedrock과 Nova Pro 활용
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
AWS 서비스 경험자, 클라우드 애플리케이션 개발자 (난이도: 중간~고급)
핵심 요약
- AWS Bedrock의 Nova Pro 모델과 Converse API를 활용한 컨텍스트 유지형 챗봇 구현
- S3 + CloudFront + Route 53을 통한 정적 웹 호스팅 및 CDN 구성
- DynamoDB를 사용한 세션 관리 및 ElasticSearch 컨테이너 배포 (EC2 기반)
- Lambda + API Gateway를 통한 실시간 영화 추천 로직 구현
섹션별 세부 요약
1. 프론트엔드 배포
- S3 버킷 생성 및 정적 웹 호스팅 활성화 (도메인:
chitrangi.cloudnirvana.in
) - CloudFront 배포 및 SSL 인증서 적용 (Certificate Manager 사용)
- Route 53 서브도메인 레코드 생성 (CloudFront에 연결)
- HTML/CSS/JavaScript 기반 챗봇 인터페이스 구현 (typing indicator, 메시지 스타일링 포함)
- localStorage를 활용한 세션 ID 관리 (
crypto.randomUUID()
사용)
2. API 계층 배포
- Python 기반 Lambda 함수 생성 (Chitrangi)
- API Gateway HTTP API 설정 및 Lambda와의 통합 (CORS 활성화)
- Lambda 핵심 로직:
```python
import boto3
def lambda_handler(event, context):
# DynamoDB에서 영화 데이터 검색 + Bedrock 모델 사용
# Nova Pro 모델을 통한 사용자 입력 처리
```
3. 백엔드 서비스 구축
- DynamoDB 테이블 생성:
- imdb_movies
(Partition Key: movie_id
, Sort Key: title
)
- chatbot_sessions
(Partition Key: session_id
, Sort Key: timestamp
)
- 데이터 로딩 스크립트:
```python
import pandas as pd
df = pd.read_csv("imdb_movies.csv")
for index, row in df.iterrows():
dynamodb.Table("imdb_movies").put_item(Item=row.to_dict())
```
- EC2 인스턴스로 ElasticSearch 컨테이너 실행 (오픈소스 도메인 생성 대신 유연한 관리 목적)
- Bedrock 모델 활용:
- Titan Text Embeddings V2 (벡터 생성)
- Nova Pro (사용자 프롬프트 처리)
결론
- AWS 서비스 통합을 통한 실시간 영화 추천 챗봇 구현 시, Lambda + API Gateway의 비동기 처리가 핵심
- DynamoDB의 세션 관리와 ElasticSearch의 검색 성능을 최적화해야 하며, Bedrock 모델 접근 권한은 사전 요청 필수
- 프론트엔드 개발 시, CSS 애니메이션과 JavaScript 이벤트 핸들링을 통해 자연스러운 사용자 경험 구현 권장