🏗️ 시스템 아키텍처
전체 처리 흐름
📱 음성 파일 업로드 → 화자 구분 → 회의록 생성 → 이메일 발송
사용자
M4A 업로드
M4A 업로드
→
CloudFront
+ S3 웹사이트
+ S3 웹사이트
→
Cognito
인증 (관리자 승인)
인증 (관리자 승인)
→
API Gateway
Presigned URL
Presigned URL
→
S3
직접 업로드
직접 업로드
S3
업로드
업로드
→
SQS
Queue
Queue
→
Trigger
Lambda
Lambda
→
Step Functions
오케스트레이션
오케스트레이션
Step Functions
→
Transcribe
(화자 구분 + 전사)
(화자 구분 + 전사)
→
EventBridge
완료 이벤트
완료 이벤트
→
Resume
Lambda
Lambda
Resume
Lambda
Lambda
→
Claude Opus 4.8
회의록 생성
회의록 생성
→
SES
이메일 발송
이메일 발송
→
📧 사용자
이메일 수신
이메일 수신
회원가입 · 관리자 승인 플로우
사용자
회원가입
회원가입
→
Cognito
Pre Sign-up
Pre Sign-up
→
Lambda
관리자 알림
관리자 알림
→
SES
승인 요청 메일
승인 요청 메일
→
관리자
원클릭 승인
원클릭 승인
→
SES
승인 완료 메일
승인 완료 메일
Step Functions 워크플로우 (Wait for Callback 패턴)
① InvokeBDA — Transcribe 비동기 호출 (화자 구분 30명) + Task Token 저장 (DynamoDB)
↓ Wait for Callback (EventBridge가 Transcribe 완료 이벤트 전달)
② ProcessAudio — 전사 결과 수신 → Claude Opus 4.8로 회의록 생성 (양식·요약수준·언어 반영)
↓
③ SendEmail — HTML 이메일 포맷팅 → SES 발송
Lambda 함수 구성 (Python 3.12) — 10개
get_presigned_url
S3 Presigned URL 생성
양식·요약수준·언어 옵션을 S3 키에 인코딩
양식·요약수준·언어 옵션을 S3 키에 인코딩
트리거: API Gateway (POST) + Cognito Authorizer
trigger_statemachine
S3 업로드 이벤트 수신
Step Functions 워크플로우 시작
Step Functions 워크플로우 시작
트리거: SQS (S3 Event Notification)
invoke_bda
Transcribe 비동기 호출 (화자 구분 최대 30명)
Task Token을 DynamoDB에 저장
Task Token을 DynamoDB에 저장
트리거: Step Functions (Wait for Callback)
resume_workflow
Transcribe 완료 이벤트 수신 → 화자별 텍스트 추출
STT 원본 텍스트 S3 로그 저장 → 워크플로우 재개
STT 원본 텍스트 S3 로그 저장 → 워크플로우 재개
트리거: EventBridge (Transcribe 완료)
process_audio
전사 결과를 Claude Opus 4.8에 전달
양식(고객미팅/기본/경영보고) × 요약수준 × 언어별 프롬프트 분기
양식(고객미팅/기본/경영보고) × 요약수준 × 언어별 프롬프트 분기
트리거: Step Functions
send_email
회의록을 HTML 이메일로 포맷팅
SES로 사용자 이메일에 발송
SES로 사용자 이메일에 발송
트리거: Step Functions
get_history
Step Functions 실행 이력 조회 (사용자별 필터링)
회의록 HTML · STT 원본 텍스트 상세 조회 + 회원 관리(승인/삭제)
회의록 HTML · STT 원본 텍스트 상세 조회 + 회원 관리(승인/삭제)
트리거: API Gateway (GET) + Cognito Authorizer
pre_signup
회원가입 시 자동 승인 차단
관리자에게 승인 요청 이메일 발송
관리자에게 승인 요청 이메일 발송
트리거: Cognito Pre Sign-up
post_confirmation
관리자 승인 완료 시
사용자에게 승인 완료 + 로그인 링크 이메일 발송
사용자에게 승인 완료 + 로그인 링크 이메일 발송
트리거: Cognito Post Confirmation
approve_user
승인 메일의 원클릭 링크 처리 (HMAC 토큰 검증)
Cognito 계정 확인 + 이메일 인증 완료 처리
Cognito 계정 확인 + 이메일 인증 완료 처리
트리거: API Gateway (GET, 인증 불필요)
사용자 선택 옵션
📝
회의록 양식 3종
고객미팅형 · 기본형 · 경영보고형
📊
요약 수준 3단계
간략(~20%) · 표준(~40%) · 상세(~70%)
🌐
회의록 언어
한국어 · English
주요 특징
👥
최대 30명 화자 구분
Amazon Transcribe Speaker Diarization
⚡
완전 서버리스
관리 포인트 제로, 자동 스케일링
🔒
관리자 승인제
가입 요청 → 관리자 승인 → 사용 가능
⏱️
6~12분 처리
업로드 → 이메일 수신까지
🛠️ 기술 스택
Infrastructure (AWS CDK · TypeScript)
☁️
AWS CDK v2
TypeScript — 인프라 코드 (IaC)
⚡
AWS Lambda
Python 3.12 — 10개 함수
📦
Amazon S3
오디오 업로드 + 정적 웹 호스팅
🌐
Amazon CloudFront
HTTPS CDN — 웹 화면 서빙
🔐
Amazon Cognito
User Pool — 사용자 인증 + 관리자 승인
🌐
API Gateway
REST API + Cognito Authorizer (upload, history)
🔄
Step Functions
Wait for Callback 패턴 오케스트레이션
📬
Amazon SQS
S3 이벤트 버퍼링
🔔
Amazon EventBridge
Transcribe 완료 이벤트 라우팅
🗄️
Amazon DynamoDB
Task Token 저장 (Wait for Callback)
✉️
Amazon SES
회의록 발송 + 가입 승인 알림
AI / ML
🤖
Claude Opus 4.8
global.anthropic.claude-opus-4-8 — 회의록 생성 (양식·요약·언어 분기)
🎙️
Amazon Transcribe
화자 구분 (최대 30명) + 음성 전사 (한국어)
Frontend
🌐
HTML / CSS / JavaScript
Vanilla — 빌드 도구 없음, S3 + CloudFront 호스팅
🔑
amazon-cognito-identity-js
v6 — Cognito 인증 (CDN)
Key Libraries & SDKs
📦
boto3
AWS SDK for Python — Lambda에서 AWS 서비스 호출
🏗️
aws-cdk-lib
v2 — 인프라 정의
🎤 음성 파일 업로드
녹음된 회의 파일을 업로드하면 회의록을 자동 생성합니다.
요약 수준
회의록 양식
📁
파일을 드래그하거나 클릭하여 선택
M4A, MP3, WAV, AAC 지원 · 최대 500MB · 분할 녹음은 여러 개 선택
📋 처리 이력
업로드한 파일의 처리 상태와 결과를 확인할 수 있습니다.