
AWS에서 유해 콘텐츠를 차단하는 서버리스 AI 요약기 구축하기
요약
AWS 서버리스 아키텍처를 활용하여 유해 콘텐츠와 개인정보를 차단하는 AI 요약기 구축 방법을 소개합니다. 입력과 출력 단계 모두에서 가드레일을 적용하여 보안과 규제 준수를 보장하는 구조를 다룹니다.
핵심 포인트
- 입력 및 출력 단계의 이중 가드레일 적용으로 보안 강화
- 개인정보(전화번호, 이메일 등) 마스킹 및 민감 정보 차단 기능
- AWS Lambda와 Bedrock을 활용한 서버리스 아키텍처 구현
- EU AI Act 등 글로벌 AI 규제 준수를 위한 인프라 수준의 대응
시작하게 된 계기
우리 모두는 별생각 없이 ChatGPT에 무언가를 붙여넣어 본 적이 있습니다. 때때로 그 "무언가"에는 전화번호, 이메일, 혹은 더 나쁜 정보가 포함되어 있기도 합니다.
이를 막을 수 있는 것은 아무것도 없습니다. 안전 점검도, 필터도 없습니다.
저는 이런 생각을 했습니다. 만약 AI에게 보안 요원이 있다면 어떨까? AI가 입력을 보기 전에 모든 입력을 확인하고, 사용자가 출력을 보기 전에 모든 출력을 확인하는 무언가가 있다면 말이죠.
그래서 직접 만들었습니다.
기능
AI Content Guard — 안전 계층(safety layer)을 갖춘 텍스트 요약기입니다.
- 일반 텍스트 → 깔끔한 2~3줄 요약 ✅
- 텍스트 내 전화번호/이메일/이름 →
{PHONE},{EMAIL},{NAME}으로 숨김 처리, 요약은 그대로 생성 ✅ - 신용카드 / 주민등록번호(SSN) → 완전히 차단, AI가 이를 절대 볼 수 없음 🚫
- 혐오 표현, 폭력, 프롬프트 공격(prompt attacks) → 즉시 차단 🚫
가드레일(guardrail)은 두 번 실행됩니다. 한 번은 사용자의 입력(input)에 대해, 한 번은 AI의 출력(output)에 대해 실행됩니다. 전후 모두 안전을 보장합니다.
아키텍처
흐름:
사용자 → Amplify (React UI) → API Gateway → Lambda
→ Guardrail 입력(INPUT) 확인 (차단 또는 계속 진행)
→ Bedrock AI 모델 (요약 생성)
...
차단 시 = 0.4초. 성공 시 = 1.5초.
차단이 더 빠른 이유는 AI 모델을 호출하지 않기 때문입니다.
왜 서버리스(serverless)인가?
- 관리하거나 패치할 서버가 없음
- 아무도 앱을 사용하지 않을 때는 비용이 전혀 들지 않음
- 100명이 동시에 접속해도 자동으로 확장(Auto-scales)
- 명령어 하나로 배포하고, 명령어 하나로 제거
저는 코드를 작성합니다. AWS가 이를 실행합니다. 그것이 계약 조건입니다.
스택
| 서비스 | 역할 |
|---|---|
| Lambda (Python 3.12) | 로직 실행 |
| ... |
가드레일이 중요한 이유
이것은 이론적인 이야기가 아닙니다. 이제는 실제적인 요구사항입니다.
- Samsung은 직원이 코드를 유출한 이후 ChatGPT 사용을 금지했습니다.
- EU AI Act(EU 인공지능법)는 안전 조치를 요구합니다. 가드레일(Guardrails)이 없으면 규정을 준수하지 않는 것이 됩니다.
- 인도의 DPDP Act(디지털 개인정보 보호법)는 보호되지 않은 개인 데이터에 대해 귀하에게 책임을 묻습니다.
- 귀하의 챗봇이 혐오 표현을 생성하는 스크린샷 단 한 장만으로도 귀하의 제품은 끝장날 수 있습니다.
가드레일은 이를 인프라 수준에서 해결합니다. AI에게 안전해지라고 요청하는 것이 아니라, AI 앞에 벽을 세우는 것입니다.
학생 및 주니어 개발자를 위하여
이 프로젝트는 실제 면접에서 등장하는 내용들을 다룹니다:
- "서버리스(Serverless) 환경에서 작업해 본 적이 있나요?" → 네. Lambda, API Gateway, DynamoDB를 사용했습니다.
- "보안은 어떻게 처리하나요?" → 최소 권한 원칙(Least-privilege) 기반의 IAM, 암호화, 심층 방어(Defense in depth)를 적용합니다.
- "AI 프로젝트에 대해 말씀해 주세요." → 콘텐츠 안전을 위한 가드레일이 적용된 요약기를 구축했습니다.
- "배포는 어떻게 하나요?" → 코드형 인프라(Infrastructure as Code)를 사용합니다. 명령어 하나면 충분합니다.
Razorpay, CRED, Swiggy와 같은 기업들도 정확히 동일한 서비스들을 사용합니다. 패턴은 같고, 규모만 다를 뿐입니다.
솔직한 조언: 그냥 읽기만 하지 마세요. 클론(Clone)하세요. 배포하세요. 무언가를 망가뜨려 보세요. 그리고 고쳐보세요.
Lambda에 대해 읽기만 해서는 아무도 면접을 통과할 수 없습니다. Lambda를 직접 사용해 봄으로써 통과하는 것입니다. 실습(Hands-on)만이 유일하게 머릿속에 남는 방법입니다.
직접 시도해 보세요
라이브 앱: https://main.d1244888rwbz47.amplifyapp.com
소스 코드: https://github.com/Utkarshlearner/ai-content-guard
직접 실행하기:
git clone [your-repo-url]
cd ai-content-guard
./deploy.sh all
...
5분이면 끝납니다.
제가 배운 것들
- 안전은 프롬프트 엔지니어링(Prompt engineering)이 아니라 인프라의 문제입니다.
- 차단하는 것이 성공시키는 것보다 빠릅니다 (API 호출 횟수가 적음).
- 익명화(ANONYMIZE) ≠ 차단(BLOCK) — 언제 엄격하게 적용하고 언제 관대하게 적용할지 알아야 합니다.
- 설정(SSM)과 코드(Lambda)는 분리되어 존재해야 합니다.
- "안전 장치는 나중에 추가하겠습니다"라는 태도가 기업들을 뉴스 헤드라인에 오르게 만듭니다.
저에 대하여
저는 Utkarsh입니다. AWS 기반으로 구축하고 이에 대해 글을 씁니다.
🚀 이제 당신의 차례입니다
무엇을 추가하고 싶으신가요? Cognito 로그인? 힌디어 지원? 관리자 대시보드(Admin dashboard)? Slack 봇?
포크(Fork)하세요. 무언가를 만들어 보세요. 저를 태그해 주세요.
아니면 댓글로 아이디어를 남겨주세요. 다음 버전에는 가장 좋은 아이디어들을 선정할 예정입니다.
AI로 구축하세요. 하지만 안전하게 구축하세요. 🛡️
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기