Skip to content

Latest commit

 

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

AWS Certification Learning Hub 🎓

🔗 Live Demo: https://d4yq42aqslas7.cloudfront.net

AI Tutor-powered AWS certification study platform using Bedrock RAG + Serverless architecture

📌 Overview

비개발 직군(DGR, AM, BDM 등)의 AWS 자격증 취득을 돕는 웹 기반 학습 플랫폼. 문제 풀이 + AI Tutor 챗봇이 AWS 공식 문서를 근거로 개념을 설명해주는 구조.

Key Features:

  • 📝 500+ SAA-C03 Practice Questions with explanations

  • 🤖 AI Tutor chatbot (Bedrock RAG + Claude) — answers based on official AWS docs

  • 📚 RAG sources: Exam Guide + Well-Architected Framework + 10 AWS Service FAQs

  • 🌙 Dark / Light mode

  • 🌐 Korean / English bilingual support

  • 📊 Multiple study modes (Quick Practice, Domain Practice, Mock Exam, Custom)

🏗️ Architecture

                            ┌─────────────────────────────────────────────────────┐
                            │                   AWS Cloud (ap-northeast-2)         │
                            │                                                     │
┌──────────┐   HTTPS   ┌───┴──────────┐                                          │
│  Users   │──────────▶│  CloudFront  │                                          │
│(Browser) │◀──────────│  (CDN/SSL)   │                                          │
└──────────┘           └───┬──────────┘                                          │
                            │                                                     │
              ┌─────────────┼──────────────────────────┐                          │
              │             ▼                          ▼                          │
      ┌───────────────┐              ┌────────────────────────┐                  │
      │  S3 (Frontend) │              │     API Gateway        │                  │
      │cert-hub-frontend│              │      (REST API)        │                  │
      │   index.html   │              │                        │                  │
      └───────────────┘              └───────┬───────┬────────┘                  │
                                              │       │                           │
                              ┌───────────────┘       └──────────────┐            │
                              ▼                                      ▼            │
                 ┌────────────────────┐               ┌────────────────────┐      │
                 │  Lambda: Quiz API  │               │  Lambda: Chat API  │      │
                 │ GET /questions     │               │  POST /chat        │      │
                 │ POST /submit       │               │  (AI Tutor)        │      │
                 └─────────┬──────────┘               └──────┬─────────────┘      │
                           │                                  │                   │
                           ▼                                  ▼                   │
              ┌────────────────────┐          ┌───────────────────────────┐       │
              │     DynamoDB       │          │     Amazon Bedrock        │       │
              │ CertHub-Questions  │          │  ┌─────────────────────┐  │       │
              │    -SAA-C03        │          │  │  Claude 3.5 Sonnet  │  │       │
              │  (534 questions)   │          │  │  (Inference Profile)│  │       │
              └────────────────────┘          │  └─────────────────────┘  │       │
                                              │  ┌─────────────────────┐  │       │
                                              │  │  Knowledge Base     │  │       │
                                              │  │  (RAG + Metadata    │  │       │
                                              │  │   Filter by exam)   │  │       │
                                              │  └──────────┬──────────┘  │       │
                                              └─────────────┼─────────────┘       │
                                                            │                     │
                                              ┌─────────────▼─────────────┐       │
                                              │   S3: cert-hub-knowledge  │       │
                                              │  ┌─────────────────────┐  │       │
                                              │  │ official-docs/      │  │       │
                                              │  │  ├ saa-c03-exam-    │  │       │
                                              │  │  │   guide.pdf      │  │       │
                                              │  │  └ well-architected │  │       │
                                              │  │      -framework.pdf │  │       │
                                              │  ├─────────────────────┤  │       │
                                              │  │ questions/          │  │       │
                                              │  │  └ saa-questions-   │  │       │
                                              │  │      rag.txt (424Q) │  │       │
                                              │  ├─────────────────────┤  │       │
                                              │  │ faqs/               │  │       │
                                              │  │  └ 10 AWS Service   │  │       │
                                              │  │    FAQs (S3,EC2,..) │  │       │
                                              │  ├─────────────────────┤  │       │
                                              │  │ S3 Vectors          │  │       │
                                              │  │ (Titan Embeddings)  │  │       │
                                              │  └─────────────────────┘  │       │
                                              └───────────────────────────┘       │
                                                                                  │
                            └─────────────────────────────────────────────────────┘

  ─── Deployment Pipeline ───────────────────────────────────────────────────────

  ┌──────────┐  push   ┌──────────┐  upload  ┌─────────────┐  invalidate  ┌────────────┐
  │  GitHub  │────────▶│CloudShell│─────────▶│ S3 (Frontend│─────────────▶│ CloudFront │
  │   Repo   │         │  / CLI   │          │  / Knowledge)│              │   Cache    │
  └──────────┘         └──────────┘          └─────────────┘              └────────────┘

  ─── Data Pipeline ────────────────────────────────────────────────────────────

  ┌──────────┐  parse  ┌──────────┐  upload  ┌──────────┐   sync   ┌─────────────┐
  │ Raw Data │────────▶│  Python  │─────────▶│ DynamoDB │          │  Knowledge  │
  │(PDF/TXT) │         │ Scripts  │─────────▶│    S3    │─────────▶│    Base     │
  └──────────┘         └──────────┘          └──────────┘          └─────────────┘

✅ Features

  • Quiz engine (Quick Practice / Domain Practice / Mock Exam / Custom)

  • SAA-C03 data pipeline (535 questions parsed, 424 complete with explanations)

  • Serverless backend (Lambda + API Gateway + DynamoDB)

  • Static hosting (S3 + CloudFront)

  • Bedrock Knowledge Base (RAG) — S3 Vectors + metadata filtering

  • AI Tutor chatbot (Bedrock Claude + RAG) — floating panel UI

  • Bilingual support (Korean / English toggle)

  • Dark / Light mode

  • Top navigation bar with settings

  • Resizable chatbot panel (drag to resize)

  • Learning dashboard (domain-wise accuracy tracking)

  • AWS Service FAQ data (10 services — scraped & uploaded to S3)

  • CLF-C02 / AIF-C01 question data

  • Streaming responses (WebSocket + Bedrock invoke_model_with_response_stream)

🛠️ Tech Stack

Layer

Service

Frontend

HTML + CSS + JS (vanilla, single-page)

Hosting

S3 + CloudFront (CDN + SSL)

Backend

AWS Lambda (Python 3.14) × 2 functions

API

API Gateway (REST + WebSocket)

Database

DynamoDB (on-demand)

AI/ML

Amazon Bedrock (Claude 3.5 Sonnet via Inference Profile)

RAG

Bedrock Knowledge Base + S3 Vectors

Embeddings

Titan Text Embeddings v2

Vector Store

S3 Vectors (cost-optimized, upgradable to OpenSearch Serverless)

RAG Source

S3 (PDF + TXT + FAQ) + Metadata filtering by exam type

📁 Project Structure

aws-cert-learning-hub/
├── frontend/
│   └── index.html                    # Main app (single HTML, 46KB)
├── backend/
│   └── lambda/
│       ├── question_service.py       # Quiz API (GET /questions, POST /submit)
│       └── chat_service.py           # AI Tutor API (POST /chat)
├── data-pipeline/
│   ├── parse_saa_questions.py        # TXT solution parser
│   ├── parse_pdf_options.py          # PDF options extractor
│   └── export_questions.py           # DynamoDB → RAG text export
├── docs/
│   ├── ARCHITECTURE.md               # Detailed architecture doc
│   └── bedrock-rag-setup.md          # RAG setup guide
├── CHANGELOG.md                      # Development log
└── README.md

🔌 API Endpoints

REST API

Method

Path

Lambda

Description

GET

/questions

CertHub-QuestionService

Fetch random questions (params: count, domain, mode)

POST

/submit

CertHub-QuestionService

Grade answers, return score + explanations

POST

/chat

CertHub-ChatService

AI Tutor — RAG-based Q&A (fallback)

Base URL: https://2ctiq7wune.execute-api.ap-northeast-2.amazonaws.com/prod

WebSocket API (Streaming)

Route

Lambda

Description

$connect

CertHub-WS-Connect

Store connection ID in DynamoDB

$disconnect

CertHub-WS-Disconnect

Remove connection ID from DynamoDB

sendMessage

CertHub-WS-SendMessage

RAG retrieve + Claude streaming → token-by-token response

WebSocket URL: wss://1zt8c94hdi.execute-api.ap-northeast-2.amazonaws.com/production/

📊 Progress Log

Date

Milestone

2026-07-18

Frontend complete + S3/CloudFront deployment

2026-07-19

Lambda + API Gateway backend complete

2026-07-20

DynamoDB data pipeline complete (534 items)

2026-07-22

AIF badge image fix + redeployment

2026-07-23

AI Tutor project started — S3 knowledge bucket + RAG source upload

2026-07-24

Bedrock Knowledge Base (S3 Vectors) created + synced

2026-07-24

CertHub-ChatService Lambda created + IAM (Bedrock + Inference Profile)

2026-07-24

API Gateway /chat endpoint deployed

2026-07-24

AI Tutor API test successful (Claude 3.5 Sonnet via RAG)

2026-07-24

Frontend: Floating chatbot UI added

2026-07-24

Frontend: Korean/English bilingual toggle (i18n)

2026-07-24

Frontend: Dark/Light mode + Top navigation bar

2026-07-24

Lambda: Multi-language system prompt (ko/en)

2026-07-24

RAG source expanded: 10 AWS Service FAQs (S3, EC2, VPC, Lambda, RDS, ELB, CloudFront, IAM, SQS, DynamoDB)

2026-07-24

Frontend: Resizable chatbot panel (drag corner to resize)

2026-07-25

WebSocket Streaming: DynamoDB connection table + API Gateway WebSocket API

2026-07-25

Lambda × 3 (WS-Connect, WS-Disconnect, WS-SendMessage)

2026-07-25

Bedrock invoke_model_with_response_stream — token-level streaming

2026-07-25

Frontend: WebSocket integration + REST fallback

2026-07-25

Live deployment + streaming test successful 🎉

2026-08-02

Frontend: Dark mode answer text visibility fix deployed to production

💰 Estimated Monthly Cost

Service

Cost

Bedrock (Claude 3.5 Sonnet)

~$1-5

API Gateway WebSocket

~$0.01

DynamoDB (Connections table)

~$0.01

S3 Vectors (vector store)

~$1-5

DynamoDB (on-demand)

~$0.5

Lambda + API Gateway

~$0.1

S3 + CloudFront

~$0.05

Total

~$3-12/month

🔑 Key Design Decisions

Decision

Rationale

S3 Vectors over OpenSearch Serverless

Cost optimization ($5/mo vs $172/mo), sufficient for small-scale project

Metadata filtering

Future-proof — add CLF/AIF exams without recreating KB, filter by exam field

Vanilla HTML (no React)

Node.js install blocked on work laptop, single HTML is S3-deploy friendly

Serverless only

No EC2 — cost approaches $0 with zero traffic

Inference Profile

Required for Claude 3.5 Sonnet v2 in ap-northeast-2, APAC prefix apac.*

Separate Lambda functions

Quiz vs Chat have different timeout (3s vs 30s) and IAM needs

i18n with data attributes

Clean separation of content from logic, easy to add more languages

WebSocket + REST fallback

WebSocket for streaming UX, REST as fallback if WS connection fails

Separate retrieve + stream

retrieve_and_generate doesn't support streaming; split into retrieve + invoke_model_with_response_stream

🚀 Deployment

Component

Resource

Frontend

CloudFront Distribution EZ9XCA2AHSV5Chttps://d4yq42aqslas7.cloudfront.net

Backend API

https://2ctiq7wune.execute-api.ap-northeast-2.amazonaws.com/prod

Knowledge Base

L2I29PW3Z9 (S3 Vectors)

WebSocket API

wss://1zt8c94hdi.execute-api.ap-northeast-2.amazonaws.com/production/

Region

ap-northeast-2 (Seoul)

Account

797240615245

🔜 Next Steps

  1. Learning Dashboard — Track domain-wise accuracy per user

  2. CLF-C02 / AIF-C01 — Add question data for other certifications

  3. GitHub Actions CI/CD — Automate S3 deployment on push

  4. Custom domain — Route53 + ACM for branded URL

📝 License

MIT

About

AI Tutor-powered AWS Certification Study Platform using Bedrock RAG + Serverless architecture

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages