AWS AWS 12-2 완성품 AI API — Rekognition·Transcribe·Polly·Textract·Comprehend·Translate·Lex·Personalize
AWS · 22/27

AWS 12-2 완성품 AI API — Rekognition·Transcribe·Polly·Textract·Comprehend·Translate·Lex·Personalize

gabury1고친 사람 github-actions[bot]

회원이 올린 사진에서 선정적인 것을 걸러야 하고, 고객센터 통화를 글로 남겨야 하고, 스캔한 계약서에서 표를 뽑아야 한다고 해 봅시다. 셋 다 머신러닝 모델이 하는 일입니다. 그런데 데이터를 모으고 모델을 학습시켜 서버에 올리는 일은 백엔드 팀이 곁가지로 하기에 너무 큽니다.

AWS 는 이런 흔한 일을 이미 학습된 모델 뒤에 감추고 API 로 내놓았습니다. 이미지를 보내면 찾은 사물의 이름과 신뢰도가, 음성 파일을 보내면 단어마다 시각이 붙은 글이 JSON 으로 돌아옵니다. 이 편은 그런 완성품 여덟 개를 봅니다. 사진과 영상을 읽는 Rekognition, 문서를 읽는 Textract, 말을 글로 바꾸는 Transcribe 와 글을 말로 바꾸는 Polly, 글을 분석하는 Comprehend 와 다른 언어로 옮기는 Translate, 대화를 받아 일을 처리하는 Lex, 사용자 행동으로 추천을 만드는 Personalize 입니다. 프롬프트로 무엇이든 시키는 생성형 모델(Bedrock)과 모델을 직접 만드는 SageMaker AI 는 12-1편(AI를 가져다 쓰고 만든다)에서 다룹니다.

고를 때 걸리는 것은 대개 두 가지입니다. 하나는 한국어입니다. 같은 서비스 안에서도 기능마다 지원 언어가 달라서, 영어로는 되는 기능이 한국어로는 안 되는 일이 흔합니다. 다른 하나는 요금이 붙는 방식입니다. 기성 기능은 부른 만큼만 받지만, 내 데이터로 학습시킨 맞춤 모델은 켜 둔 시간만큼 받습니다. 끝에서 이 둘을 모아 봅니다. 요금과 지원 언어는 2026-11-13 서울(ap-northeast-2) 기준입니다.

지도

flowchart TD
    IN["무엇을 넣나"] --> IMG["사진·영상"]
    IN --> DOC["스캔한 문서·PDF"]
    IN --> AUD["음성"]
    IN --> TXT["글"]
    IN --> CHAT["사용자와 주고받는 말"]
    IN --> EVT["클릭·구매 기록"]
    IMG --> REK["Rekognition"]
    DOC --> TEX["Textract"]
    AUD --> TRS["Transcribe"]
    TXT --> Q{"무엇을 얻나"}
    Q -- "소리" --> POL["Polly"]
    Q -- "감정·개체" --> COM["Comprehend"]
    Q -- "다른 언어" --> TRL["Translate"]
    CHAT --> LEX["Lex"]
    EVT --> PER["Personalize"]

넣는 것의 종류로 서비스가 거의 정해지고, 경계가 겹치는 곳은 하나입니다. Rekognition 도 사진 속 글자를 읽지만 한국어는 못 읽어서, 한국어 글자가 든 이미지는 Textract 로 보냅니다(1절). 넣는 것이 글이면 무엇을 얻고 싶은지를 한 번 더 봅니다.

1. Rekognition — 사진과 영상에서 무엇이 보이나

사진 한 장을 보내면 무엇을 알려 줄까요? Rekognition 은 알고 싶은 것마다 API 를 따로 둡니다. 레이블 찾기(DetectLabels)는 사진에 찍힌 사물·장면의 이름을 돌려주고, 찾은 것마다 신뢰도와 위치 상자를 붙입니다. 레이블 이름은 영어로 옵니다. 노출·폭력처럼 걸러야 할 이미지는 유해 콘텐츠 찾기(DetectModerationLabels)가 같은 꼴로 알려 줍니다. 몇 점 이상을 걸러 낼지는 결과에 붙은 신뢰도를 보고 내가 정하고, 그 문턱 근처의 애매한 것은 사람이 다시 보게 넘기는 식으로 씁니다. 그 밖에 얼굴 비교·유명인 알아보기·보호 장비 확인 같은 API 도 있습니다(What is Amazon Rekognition?).

회원 사진에서 같은 사람을 찾으려면 얼굴을 컬렉션(얼굴 특징을 저장해 두는 색인)에 넣어 두고 새 사진으로 검색합니다.

이미지 속 글자도 DetectText 로 읽지만 한계가 있습니다. 읽는 언어가 영어·아랍어·러시아어·독일어·프랑스어·이탈리아어·포르투갈어·스페인어뿐이라 한국어 간판은 못 읽고, 한 이미지에서 100단어까지만 찾습니다(Detecting text).

S3 에 올린 영상은 비동기로 분석합니다. StartLabelDetection 같은 시작 요청을 보내면 끝났을 때 SNS 토픽으로 알림이 오고, 그때 결과를 가져옵니다. 결과는 7일만 보관됩니다(Calling Amazon Rekognition Video operations). SNS 와 그 뒤에 SQS 를 붙이는 방법은 큐와 알림 편(07-1)에서 봤습니다.

기성 레이블에 없는 것, 예를 들어 우리 회사 로고나 자사 상품을 찾으려면 Custom Labels 로 내 이미지를 학습시킵니다. 학습이 끝난 모델은 추론 단위(inference unit)를 몇 개로 정해 시작합니다. 단위마다 시간 요금이 붙어서 두 단위로 켜면 값도 두 배이고, 멈추지 않으면 이미지를 한 장도 안 보내도 계속 받습니다(Amazon Rekognition pricing).

접힌 기능도 있습니다. 카메라 스트림에서 사람·반려동물·택배가 보이면 알려 주던 스트리밍 영상 이벤트와, S3 에 모은 이미지를 작업 하나로 한꺼번에 거르던 일괄 이미지 유해 콘텐츠 분석은 2026-03-31 공지로 유지보수 단계에 들어가 새 고객이 쓸 수 없고(Services in Maintenance), 영상 속 사람의 동선을 따라가던 Person Pathing 은 2025-10-31 에 완전 종료됐습니다(Services in Full Shutdown).

요금은 이미지 API 를 부른 횟수로 셉니다. 한 이미지에 API 두 개를 부르면 두 장으로 칩니다.

Rekognition · 서울 · 2026-11-13
  이미지 API      장당 $0.0012 (월 첫 100만 장)
                 쓸수록 단가가 내려간다
  저장 영상 분석   레이블 찾기 분당 $0.12
  얼굴 저장       얼굴 1,000개 월 $0.012
  Custom Labels  학습 시간당 $1.14
                 추론 단위 1개 시간당 $4 (모델을 켜 둔 동안)

기성 API 는 장당 $0.0012 에 학습도 필요 없으니, 막히는 곳은 값이 아니라 기성 레이블에 없는 것과 한국어 글자입니다.

이럴 때 맞다 이럴 때 안 맞다 대신 치르는 것
회원이 올린 이미지에서 노출·폭력 이미지를 먼저 거를 때 걸러 낸 결과를 사람 검토 없이 최종 판정으로 쓸 때 신뢰도 문턱을 정하고, 문턱 근처의 애매한 것은 따로 다뤄야 한다
사진에 찍힌 사물로 태그를 달아 검색할 때 자사 상품·로고처럼 기성 레이블에 없는 것을 찾을 때 Custom Labels 로 가면 학습과 켜 둔 시간의 요금이 붙는다
영문 표지판·번호처럼 짧은 글자를 읽을 때 한국어 글자를 읽을 때(→ Textract) 이미지당 100단어까지만 찾는다
S3 에 둔 영상에서 장면별 레이블을 시간대로 뽑을 때 분석 결과를 몇 주 뒤에 다시 꺼내 봐야 할 때 결과는 7일만 보관되니 받자마자 내 저장소로 옮긴다

2. Textract — 문서에서 글자와 구조를 뽑는다

스캔한 PDF 에서 글자만 뽑으면 될까요, 표의 칸과 「성명: 홍길동」 같은 짝까지 알아야 할까요? Textract 는 이 둘을 다른 API 로 나눕니다. DetectDocumentText 는 글자와 줄, 그 위치만 돌려줍니다. AnalyzeDocument 는 켜는 기능에 따라 더 읽습니다. 표의 칸(Tables), 제목·문단 같은 문서 구조(Layout), 항목과 값의 짝(Forms), 「청구 금액은?」처럼 물으면 답을 찾아 주는 쿼리(Queries)가 그 기능입니다. 영수증·청구서는 금액·날짜·거래처를 항목으로 돌려주는 전용 API AnalyzeExpense 가 따로 있습니다. 그 밖에 서명 찾기와 미국 신분증 전용 API 도 있습니다(What is Amazon Textract?).

동기 요청은 PDF·TIFF 한 쪽, 10 MB 까지입니다. 여러 쪽 문서는 비동기 작업으로 돌리고 PDF 하나에 3,000쪽, 500 MB 까지 받습니다. 한국어는 글자 읽기와 표·레이아웃·서명에서만 됩니다. Forms 는 영어·스페인어·이탈리아어·포르투갈어·프랑스어·독일어만 받습니다. 쿼리와 영수증·신분증 API 는 영어만 받습니다. 손글씨도 영어만 읽습니다(Set Quotas in Amazon Textract).

요금은 쪽 수로 받되 켠 기능마다 값이 다르고, 기능을 겹쳐 켜면 조합마다 따로 정한 값을 받습니다.

Textract · 서울 · 2026-11-13 · 월 첫 100만 쪽
  글자 읽기(DetectDocumentText)   1,000쪽 $1.50
  레이아웃                        1,000쪽 $4
  영수증·청구서(AnalyzeExpense)    1,000쪽 $10
  표                             1,000쪽 $15
  쿼리                           1,000쪽 $15
  양식(항목과 값의 짝)             1,000쪽 $50
  표 + 양식 + 쿼리                1,000쪽 $70

무료 한도는 새 고객의 첫 3개월에만 있습니다(Amazon Textract pricing).

글자 읽기와 양식 사이가 33배입니다. 한국어 문서라면 어차피 양식과 쿼리를 못 쓰니, 글자·표·레이아웃을 받아 짝짓기는 내 코드로 하는 것이 기본 경로가 됩니다.

이럴 때 맞다 이럴 때 안 맞다 대신 치르는 것
한국어 스캔 문서에서 글자·표·문단 구조를 뽑을 때 한국어 양식에서 항목과 값의 짝을 바로 받고 싶을 때 짝짓기와 값 검증은 내가 짠다
영문 영수증·청구서에서 금액·날짜·거래처를 뽑을 때 한국어 영수증에서 같은 항목을 뽑을 때(AnalyzeExpense 는 영어만) 한국어면 글자·표를 받아 금액을 내 코드로 찾는다
인쇄된 서류를 읽을 때 손으로 쓴 한국어 신청서를 읽을 때 손글씨는 영어만 읽어서 한국어 손글씨는 사람이 옮겨 적어야 한다
수백 쪽 PDF 를 한꺼번에 처리할 때 여러 쪽 문서의 결과를 한 요청 안에서 바로 받아야 할 때 여러 쪽은 비동기 작업을 시작하고 결과를 따로 가져와야 한다

뽑은 글을 요약하거나 자유롭게 묻고 답하려면 생성형 모델에 넘깁니다(12-1편).

3. Transcribe·Polly — 말을 글로, 글을 말로

통화 녹음을 글로 남기거나 회의 화면에 실시간 자막을 띄우려면 Transcribe 를 씁니다. S3 에 올린 파일을 맡기는 일괄 방식(StartTranscriptionJob)과, 소리를 HTTP/2 나 웹소켓으로 흘려 보내며 글을 받아 오는 스트리밍 방식이 있습니다. 결과에는 단어와 문장부호마다 시각과 신뢰도가 붙어서, 녹음의 몇 초에 무슨 말이 나왔는지 되짚을 수 있습니다(How Amazon Transcribe works).

한국어(ko-KR)는 일괄·스트리밍 둘 다 됩니다. 사내 용어는 그 낱말 목록을 넣어 두는 맞춤 어휘(custom vocabulary)로 알아듣게 할 수 있고, 이것은 모든 지원 언어에서 됩니다(Custom vocabularies). 그보다 깊게 업계 글로 다시 학습시키는 맞춤 언어 모델과, 카드 번호 같은 개인정보를 자동으로 가리는 기능은 한국어에 없습니다. 상담 통화를 분석하는 Call Analytics 는 한국어로는 통화가 끝난 뒤 파일 분석만 됩니다(Supported languages). 요금은 소리 길이를 초 단위로 셉니다.

Transcribe · 서울 · 2026-11-13
  일괄(파일)       초당 $0.0001    → 분당 $0.006
  스트리밍         초당 $0.0001667 → 분당 약 $0.010
  Call Analytics  초당 $0.0005    → 분당 $0.03 (월 25만 분까지)
  초 단위로 세고 최소 시간이 없다

그럼 안내 멘트를 사람 목소리처럼 들리게 만들려면 무엇을 쓸까요? 글을 말로 바꾸는 반대 방향은 Polly 가 맡습니다. 글을 보내면 음성 파일(MP3·OGG·PCM)이 돌아옵니다. 목소리를 만드는 방식(엔진)은 표준·뉴럴·장문(long-form)·생성형 네 가지입니다. 표준이 가장 싸고 가장 기계적이며, 나머지 셋은 사람 목소리에 더 가깝습니다. 한국어 목소리는 Seoyeon(표준·뉴럴·생성형), Jihye(뉴럴), Hyunduk(생성형) 셋이고 장문 엔진은 한국어가 없습니다(Available voices).

음성을 그때그때 만들어 바로 틀 때는 한도를 봐야 합니다. 뉴럴 음성의 실시간 요청은 기본 초당 8건까지이고, 글자 수 한도와 다른 엔진의 한도는 Quotas in Amazon Polly에 있습니다. 요금은 글자 수로 받고, 엔진에 따라 같은 글의 값이 네 배 넘게 벌어집니다.

Polly · 서울 · 2026-11-13 · 100만 자당
  표준     $4
  뉴럴     $16
  생성형   $30

생성형 엔진은 서울에서도 쓸 수 있지만(Generative voices), 서울 요금표에는 표준과 뉴럴 값만 올라 있어서 생성형은 리전을 밝히지 않은 요금 페이지의 값을 적었습니다. 만든 음성은 저장해 두고 다시 틀어도 추가 요금이 없습니다(Amazon Polly pricing). 같은 안내 멘트를 매번 합성하지 말고 한 번 만들어 S3 에 둡니다.

두 서비스 모두 쓴 만큼만 받으니, 요금보다 한국어에서 빠지는 기능과 뉴럴 음성의 실시간 한도를 먼저 봅니다.

이럴 때 맞다 이럴 때 안 맞다 대신 치르는 것
회의·상담 녹음을 글로 남겨 검색할 때(일괄) 한국어 녹취에서 개인정보를 자동으로 가려야 할 때 가리기는 받은 글에서 내가 따로 처리한다
화상 상담 화면에 실시간 자막을 띄울 때(스트리밍) 사내 용어가 많아 받아쓰기를 그 말에 맞춰 학습시켜야 할 때 한국어는 맞춤 언어 모델을 못 쓰고, 용어 목록을 넣는 맞춤 어휘까지만 된다
안내 멘트·알림 음성을 미리 만들어 둘 때(Polly) 매번 다른 글을 동시에 수십 건씩 뉴럴 음성으로 읽힐 때 뉴럴 실시간 요청은 기본 초당 8건이라 한도를 늘려야 한다

4. Comprehend·Translate — 글을 이해하고 옮긴다

상품 리뷰 1만 건이 긍정인지 부정인지, 어떤 상품과 브랜드가 언급됐는지 세려면 Comprehend 를 씁니다. 글을 보내면 감정(긍정·부정·중립·혼합), 사람·장소·조직·날짜 같은 개체, 핵심 구문, 어느 언어인지를 돌려주고, 이메일·카드 번호·미국 사회보장번호 같은 개인정보의 위치를 찾는 API 도 있습니다. 내 분류 기준(문의 유형 같은)으로 학습시키는 맞춤 분류와 맞춤 개체 인식도 됩니다.

한국어는 개체·핵심 구문·감정까지입니다. 개인정보 찾기는 영어와 스페인어만 받고, 찾는 종류에도 한국 주민등록번호는 없습니다(Detecting PII entities). 글 속 대상마다 감정을 따로 보는 대상별 감정은 영어만 받습니다. 맞춤 분류·맞춤 개체 인식은 영어·독일어·스페인어·프랑스어·이탈리아어·포르투갈어만 받습니다(Languages supported in Amazon Comprehend). 문서 묶음에서 주제를 뽑던 주제 모델링, 기사에서 인수·파산 같은 사건을 뽑던 이벤트 찾기, LLM 에 넣을 글이 위험한지 가리던 프롬프트 안전성 분류는 2026-03-31 공지로 유지보수 단계에 들어가 새 고객이 쓸 수 없습니다(Services in Maintenance).

요금 단위는 100자이고, 요청마다 최소 3단위(300자)를 받습니다.

Comprehend · 서울 · 2026-11-13
  감정·개체·핵심 구문·언어 찾기
                단위(100자)당 $0.0001
                (월 첫 1,000만 단위)
  개인정보 찾기    단위당 $0.0001
  맞춤 모델 학습   시간당 $3
  맞춤 모델 실시간 엔드포인트
                추론 단위(초당 100자 처리)당
                초당 $0.0005, 켜 둔 동안

  300자 리뷰 1만 건 감정 = 3단위 × 1만 × $0.0001 = $3

맞춤 모델은 엔드포인트 없이 비동기 작업으로도 돌릴 수 있고, 그때는 단위당 $0.0005 를 받습니다(Amazon Comprehend pricing).

글을 다른 언어로 옮기는 일은 Translate 가 맡습니다. 한국어를 포함한 수십 개 언어 사이를 옮기고, 한국어로 옮길 때는 높임말과 반말을 고르는 격식 설정도 받습니다(Setting formality). 브랜드명·상품명을 늘 같은 말로 옮기게 하려면 사용자 지정 용어(원문과 번역어 짝을 적은 파일)를 올려 둡니다. 용어 파일은 문맥을 보고 쓸지 정하므로 매번 쓰인다는 보장은 없습니다(Customizing your translations with custom terminology). 원문 언어를 auto 로 두면 Translate 가 Comprehend 를 불러 언어를 먼저 찾고, 그 Comprehend 요금이 따로 붙을 수 있습니다(How Amazon Translate works).

한국어에 걸리는 기능은 둘입니다. 번역 결과를 짧게 줄이는 간결성(brevity) 설정은 프랑스어·독일어·이탈리아어·포르투갈어·스페인어로 옮길 때와 그 언어들에서 영어로 옮길 때만 되므로, 한국어로 옮기는 글에는 쓸 수 없습니다(Using brevity). DOCX 같은 파일을 바로 옮기는 실시간 문서 번역은 한쪽이 영어여야 해서, 한국어 문서를 일본어로 바로 옮길 수 없습니다(Supported languages and language codes). 번역 요금은 옮긴 글자 수로 받습니다.

Translate · 서울 · 2026-11-13 · 100만 자당
  글(실시간·일괄)    $15
  DOCX 문서(실시간)  $30

Comprehend 는 요청마다 최소 300자를 받고, 한국어로 되는 기능도 개체·핵심 구문·감정까지입니다.

이럴 때 맞다 이럴 때 안 맞다 대신 치르는 것
리뷰·문의의 감정과 언급된 상품을 대량으로 셀 때 한국어 글에서 개인정보를 찾아 가릴 때 한국어는 개체·핵심 구문·감정까지만 된다
감정·개체 같은 기성 결과로 문의를 거칠게 나눠도 될 때 문의 유형처럼 우리 기준으로 한국어 글을 나누는 모델이 필요할 때 맞춤 분류가 한국어를 안 받아 다른 길(12-1편)로 가야 한다
300자 안팎의 글을 한 번에 보낼 때 한 줄 댓글을 한 건씩 보낼 때 20자짜리도 300자 값을 낸다
상품 설명·공지를 여러 언어로 옮길 때(Translate) 법률 문서를 검수 없이 그대로 낼 때 기계 번역이라 사람이 검수해야 하고, 사용자 지정 용어도 늘 적용되지는 않는다

5. Lex — 몇 가지를 물어 일을 처리하는 대화

「내일 오후 3시에 두 명 예약해 줘」를 받아 예약 API 를 부르는 챗봇은 어떻게 짤까요? Lex 는 대화를 의도(intent, 사용자가 하려는 일)와 슬롯(slot, 그 일에 필요한 값)으로 나눕니다. 「예약하기」라는 의도에 「예약하고 싶어요」 같은 예문을 넣고, 날짜·시각·인원 슬롯과 각 슬롯을 물을 질문을 적어 둡니다. 사용자가 날짜만 말하면 Lex 가 남은 슬롯을 차례로 묻고, 다 채우면 Lambda 함수를 불러 실제 예약을 합니다. 입력은 글과 음성 둘 다 받고, 음성은 Lex 가 직접 알아듣습니다. 만든 봇은 버전으로 굳히고 별칭으로 가리켜 배포합니다(Amazon Lex V2 core concepts).

지금 쓰는 것은 Lex V2 입니다. 옛 V1 은 2025-09-15 에 지원이 끝나 콘솔과 자원에 접근할 수 없습니다(Add an Amazon Lex bot). 한국어(ko_KR) 봇은 만들 수 있지만 영문자와 숫자를 섞어 받는 내장 슬롯(AMAZON.AlphaNumeric)은 한국어에서 안 되고, 맞춤 어휘·신뢰도 점수·여러 값 슬롯 같은 기능은 영어 전용입니다(Languages and locales supported by Amazon Lex V2).

정해진 의도 밖의 질문에는 생성형 기능을 붙입니다. AMAZON.QnAIntent 는 어느 의도에도 안 걸린 질문을 Bedrock 모델로 받아, 내 문서를 미리 넣어 두고 질문과 비슷한 대목을 찾아 주는 검색 저장소(지식 기반, 12-1편)에서 답을 찾습니다. 이때 Bedrock 요금이 따로 붙습니다(AMAZON.QnAIntent).

Lex 를 부르는 방식은 둘입니다. 요청-응답 방식은 사용자가 한 번 말할 때마다 API 를 한 번 부르고 답을 한 번 받습니다. 스트리밍 대화는 전화처럼 연결을 열어 두고 말을 흘려 보내면서 답을 받습니다. Lex 자체의 요금은 이 방식과, 입력이 글인지 음성인지에 따라 다릅니다.

Lex V2 · 서울 · 2026-11-13
  요청-응답 방식   글 요청 $0.00075
                 음성 요청 $0.004
  스트리밍 대화    글 요청 $0.002
                 음성 15초 구간 $0.0065
                 (침묵 포함, 15초 단위로 올림)

  월 글 요청 10만 건 = 10만 × $0.00075 = $75

스트리밍 음성은 연결이 열려 Lex 가 듣고 있는 동안 계속 셉니다(Amazon Lex pricing).

Lex 는 의도와 슬롯을 미리 적어 둔 일만 처리하므로, 무엇을 물어 올지 모르는 상담에는 맞지 않습니다.

이럴 때 맞다 이럴 때 안 맞다 대신 치르는 것
예약·조회·변경처럼 정해진 일을 몇 가지 값을 물어 처리할 때 어떤 질문이 올지 모르는 자유 상담 의도·슬롯·예문을 미리 설계하고 늘려 가야 한다
전화 자동 응답을 음성으로 받을 때 사용자가 오래 말하지 않고 연결만 열어 두는 화면 스트리밍 음성은 침묵까지 15초 단위로 센다
정해진 일 바깥의 질문을 문서에서 찾아 답할 때(QnAIntent) Bedrock 을 쓸 수 없는 환경 지식 기반과 Bedrock 요금이 더해진다

6. Personalize — 사용자마다 다른 목록을 보여 준다

「이 상품을 본 사람에게 다음에 무엇을 보여 줄까」를 직접 풀려면 추천 모델을 만들어야 합니다. Personalize 는 내 사용자의 클릭·구매 같은 상호작용 기록(사용자 ID·아이템 ID·시각·이벤트 종류)을 받아 그 모델을 학습시킵니다. 아이템 정보(카테고리·가격)와 사용자 정보는 있으면 더하는 선택이고, 어느 것이든 정해 둔 스키마(열 이름과 형식)에 맞춰 넣습니다. 학습하려면 상호작용이 적어도 1,000건, 상호작용이 2건 이상인 사용자가 적어도 25명 있어야 합니다(Amazon Personalize endpoints and quotas).

데이터를 넣은 뒤 가는 길은 둘입니다. 쇼핑(ECOMMERCE)이나 동영상(VIDEO_ON_DEMAND)이면 인기 상품·함께 본 상품처럼 그 분야에서 흔한 추천을 맞춰 둔 추천기(recommender)를 고르면 됩니다. 추천기는 만들어 두는 동안 사용자 수 구간에 따라 시간 요금이 붙습니다. 이미 산 상품처럼 보여 주면 안 되는 것은 결과에서 필터로 거릅니다.

그 밖이면 레시피(추천 방식을 담은 학습 알고리즘)를 골라 내 모델을 학습시킵니다. 레시피 가운데 User-Personalization-v2·Personalized-Ranking-v2 두 개(아래 v2 레시피)는 학습 값을 시간 대신 상호작용 건수로 받고, 추천 요청 값이 다른 레시피보다 비쌉니다.

학습한 모델에서 추천을 실시간으로 받으려면 모델을 캠페인에 올립니다. 캠페인에는 최소 처리량(minProvisionedTPS, 기본 초당 1건)이 있어서, 요청이 그보다 적어도 초당 1건 몫의 요금을 냅니다. 쓰지 않는 캠페인은 지워야 요금이 멈춥니다(Deploying a solution version with a campaign). 실시간이 필요 없으면 캠페인 없이 일괄 추천 작업으로 사용자 목록 전체의 추천을 한꺼번에 뽑습니다(Amazon Personalize workflow details). 어느 길이든 새 클릭은 PutEvents 로 계속 흘려 넣어 추천이 최근 관심을 따라가게 합니다. 요금은 데이터를 넣고, 학습하고, 추천을 받는 세 단계에 각각 붙습니다.

Personalize · 서울 · 2026-11-13
  데이터 넣기       GB 당 $0.05
  학습             v2 레시피: 상호작용 1,000건당 $0.002
                   그 밖의 레시피: 학습 시간당 $0.24
  실시간 추천       v2 레시피: 요청 1,000건당 $0.15
  (캠페인)         그 밖의 레시피: 1,000건당 $0.0556
                   (월 첫 7,200만 건)
  일괄 추천         v2 레시피: 1,000건당 $0.15
                   그 밖의 레시피: 1,000건당 $0.067
                   (월 첫 2,000만 건)
  추천기            사용자 10만 명당 시간당 $0.375
                   (첫 10만 명, 넘는 구간은 단가가 내려간다)

추천기의 시간 요금은 요청이 없어도 켜 둔 동안 나갑니다(Amazon Personalize pricing).

Personalize 는 기록이 1,000건은 쌓여야 학습되고, 실시간 캠페인과 추천기는 요청이 없어도 돈이 나갑니다.

이럴 때 맞다 이럴 때 안 맞다 대신 치르는 것
클릭·구매 기록이 쌓인 쇼핑·콘텐츠 서비스 상호작용 1,000건·사용자 25명도 안 되는 새 서비스 데이터를 스키마에 맞춰 넣고 이벤트를 계속 흘려야 한다
매일 밤 보낼 추천 메일 목록(일괄 추천) 트래픽이 거의 없는 화면에 실시간 캠페인을 둘 때 캠페인은 요청이 없어도 최소 처리량만큼 낸다(8절)
인기 상품·함께 본 상품을 빨리 붙일 때(추천기) 추천 알고리즘을 직접 고치고 싶을 때 켜 둔 동안 시간 요금이 붙고, 모델 안은 못 건드려 필터로만 결과를 조정한다

7. 한국어로 쓰면 무엇이 빠지나

앞 여섯 절의 제약을 모아 보면 사진 분석과 번역은 거의 온전하고, 빈칸은 글자·양식·개인정보를 다루는 기능에 몰립니다. Personalize 는 ID 와 이벤트만 다루므로 언어와 상관이 없어 뺐습니다.

서비스 한국어로 되는 것 한국어로 안 되는 것
Rekognition 사진 분석은 언어와 상관없다(레이블 이름은 영어) 이미지 속 글자 읽기
Textract 글자 읽기·표·레이아웃·서명 양식·쿼리·영수증·신분증, 손글씨
Transcribe 일괄·스트리밍 받아쓰기, 맞춤 어휘, 통화 뒤 Call Analytics 맞춤 언어 모델, 개인정보 가리기
Polly 표준·뉴럴·생성형 목소리 장문 엔진
Comprehend 감정·개체·핵심 구문 개인정보 찾기, 대상별 감정, 맞춤 분류·개체
Translate 번역, 높임말 설정, 영어와 오가는 문서 번역 한국어로 옮길 때의 간결성 설정, 영어를 거치지 않는 실시간 문서 번역
Lex 봇 만들기, 글·음성 대화 영숫자 내장 슬롯, 영어 전용 기능 다수

서비스가 한국어를 지원해도 오른쪽 칸의 기능은 한국어로 못 씁니다. 특히 한국어 글의 개인정보를 자동으로 찾아 가리는 일은 이 편의 어느 서비스로도 안 됩니다.

8. 켜 두면 나가는 돈 — 맞춤 모델의 한 달

내 데이터에 맞춘 모델은 한 달에 얼마나 들까요? 기성 기능은 부른 만큼 냅니다. 그런데 Rekognition Custom Labels, Comprehend 맞춤 모델의 실시간 엔드포인트, Personalize 캠페인과 추천기는 켜 둔 시간으로 받습니다. 추천기는 사용자 수에 따라 값이 달라 6절의 단가로 두고, 나머지 셋을 하나씩 한 달(730시간) 켜 둔 값과, 기성 API 를 부른 만큼의 값을 나란히 셉니다.

한 달 730시간 켜 두기 · 서울 · 2026-11-13
  Rekognition Custom Labels 추론 단위 1개
    $4 × 730                       = $2,920.00
  Comprehend 맞춤 엔드포인트 추론 단위 1개
    $0.0005 × 3,600초 × 730        = $1,314.00
  Personalize 캠페인 최소 처리량 초당 1건
    1 × 3,600 × 730 = 2,628,000건
    v2 레시피     × $0.15/1,000    =   $394.20
    그 밖의 레시피 × $0.0556/1,000  =   $146.12

비교 · 기성 API 를 부른 만큼
  Rekognition 이미지 10만 장       =   $120.00
  Comprehend 300자 글 10만 건 감정  =    $30.00

Custom Labels 하나를 한 달 켜 두면 기성 레이블 API 로 10만 장을 보는 값의 24배를 넘습니다. 요청이 0건이어도 마찬가지입니다. 셋 다 켜 두지 않는 길이 있습니다. Custom Labels 는 처리할 이미지가 모였을 때 모델을 시작하고 끝나면 멈춥니다. Comprehend 맞춤 모델은 엔드포인트 대신 비동기 작업(단위당 $0.0005)으로 돌립니다. Personalize 는 실시간이 필요 없으면 캠페인 없이 일괄 추천만 씁니다.

이럴 땐 무엇

넣는 것으로 서비스를 고른 뒤, 한국어로 그 기능이 되는지와 켜 둘 모델이 필요한지를 봅니다.

상황 서비스 이유
회원이 올린 이미지에서 노출·폭력 이미지를 거른다 Rekognition 유해 콘텐츠 찾기 학습 없이 장당 $0.0012
자사 상품·로고가 찍힌 사진을 찾는다 Rekognition Custom Labels 내 이미지로 학습한다. 켜 둔 시간만큼 내므로 일괄로 돌리고 멈춘다
한국어 스캔 문서에서 글자와 표를 뽑는다 Textract 글자 읽기·표·레이아웃 한국어는 양식·쿼리가 안 되니 짝짓기는 코드로
영문 영수증의 금액·날짜를 뽑는다 Textract AnalyzeExpense 영수증 항목을 바로 돌려준다
회의·상담 녹음을 글로 남긴다 Transcribe 일괄 분당 $0.006, 단어마다 시각과 신뢰도
화면에 실시간 자막을 띄운다 Transcribe 스트리밍 분당 약 $0.010, HTTP/2·웹소켓
안내 멘트 음성을 만든다 Polly 뉴럴 한 번만 만드니 비싼 엔진이어도 값이 작고, 저장해 두면 다시 틀어도 무료
리뷰의 감정과 언급된 상품을 센다 Comprehend 100자 단위, 요청당 최소 300자
상품 설명을 여러 언어로 옮긴다 Translate + 사용자 지정 용어 100만 자당 $15, 한국어 높임말 설정
예약·조회 챗봇이나 전화 자동 응답 Lex V2 + Lambda 의도와 슬롯으로 정해진 일을 처리한다
매일 밤 사용자별 추천 메일 Personalize 일괄 추천 캠페인 없이 1,000건당 $0.067(v2 레시피는 $0.15)

자주 붙는 서비스는 S3(입력과 결과 보관), Lambda(호출과 후처리), SNS·SQS(비동기 작업의 완료 알림), Step Functions(여러 API 를 차례로 잇기), CloudWatch(호출 수와 오류 감시), Bedrock(12-1편)입니다.

한 장 요약

완성품 AI API 는 학습 없이 호출 한 번으로 사진·문서·음성·글을 다룹니다. 고르기 전에 그 기능이 한국어로 되는지부터 봅니다. 이미지 속 한국어 글자, 한국어 양식의 항목과 값, 한국어 개인정보 찾기는 이 편의 서비스로 안 됩니다. 기성 기능은 부른 만큼이지만 맞춤 모델·캠페인·추천기는 켜 둔 만큼이라, Custom Labels 하나를 한 달 켜 두면 $2,920 입니다.

관련 항목

이 편의 완성품 AI API

Amazon Rekognition · Amazon Textract · Amazon Transcribe · Amazon Polly · Amazon Comprehend · Amazon Translate · Amazon Lex · Amazon Personalize

같은 일을 생성형 모델이나 직접 만든 모델로 푸는 길

Amazon Bedrock · Amazon Bedrock Knowledge Bases · Amazon SageMaker AI · 대규모 언어 모델 · 머신러닝 · 딥러닝 · 추론

이 서비스들이 하는 일의 이름

컴퓨터 비전 · 광학 문자 인식 · 음성 인식 · 음성 합성 · 자연어 처리 · 기계 번역 · 추천 시스템

결과를 읽을 때 만나는 개념

신뢰도 점수 · 경계 상자 · 개체명 인식 · 감성 분석 · 개인 식별 정보 · 얼굴 인식 · SSML

대화와 추천을 이루는 장치

의도 분류 · 슬롯 채우기 · 협업 필터링 · 실시간 추론 · 배치 추론 · 추천 콜드 스타트

이 API 들을 엮는 AWS 서비스

Amazon S3 · AWS Lambda · Amazon SNS · Amazon SQS · AWS Step Functions · CloudWatch