AWS Bedrock(아마존 완전관리형 생성AI 플랫폼)은 서버를 따로 구축하거나 모델을 학습시키지 않아도 Claude, Llama 등 여러 AI 모델을 API(프로그램끼리 데이터를 주고받는 약속) 호출 한 줄로 쓸 수 있는 서비스입니다. Anthropic Claude 4 계열이 공식 지원되며, IAM(AWS 사용자 권한 관리 시스템) 설정만 올바르면 콘솔에서 바로 활성화할 수 있습니다. 모델 액세스 요청부터 boto3(파이썬 AWS SDK) 연동까지 2026년 6월 기준으로 정리했습니다.
AWS Bedrock이란 — 완전관리형 생성AI 플랫폼
AWS Bedrock은 Amazon이 2023년 출시한 완전관리형(Fully Managed) AI 서비스입니다. GPU 서버 설치, 모델 배포, 스케일링(트래픽 증가 시 자동으로 처리 용량을 늘리는 것)을 AWS가 대신 처리하므로 개발자는 API 호출 코드만 짜면 됩니다. Anthropic Claude, Meta Llama, Mistral, Amazon Nova 등 여러 회사의 파운데이션 모델(Foundation Model, 대규모 범용 언어 모델)을 동일한 API 구조로 호출할 수 있어 모델을 바꿔도 코드 변경이 최소화됩니다.
주요 기능으로는 모델별 요청 형식을 직접 구성하는 InvokeModel API, 다중 턴 대화를 통일된 구조로 처리하는 Converse API, 사내 문서를 올려 RAG(검색 증강 생성)를 구현하는 Knowledge Base가 있습니다.
Claude 모델 액세스 요청 절차
AWS Bedrock에서 Claude를 쓰려면 모델을 미리 ‘활성화’해야 합니다. 기본 상태에서는 어떤 파운데이션 모델도 호출할 수 없습니다. 아래 순서로 진행합니다.
IAM 역할에 필요한 최소 권한은 bedrock:InvokeModel과 bedrock:ListFoundationModels입니다. 조직 계정(AWS Organizations)이라면 관리자에게 AWS Marketplace 구독 권한(aws-marketplace:Subscribe)도 요청하세요.
boto3 Python으로 API 연동하기
모델 액세스 승인 후 boto3(파이썬용 AWS SDK)의 bedrock-runtime 클라이언트로 Claude를 호출할 수 있습니다. 신규 프로젝트에는 모델 종류와 무관하게 다중 턴 대화를 처리하는 Converse API가 권장됩니다. pip install boto3 후 아래 예제를 바로 실행할 수 있습니다.
import boto3
import json
# bedrock-runtime 클라이언트 생성 (리전 명시 권장)
client = boto3.client(
service_name="bedrock-runtime",
region_name="us-east-1" # 사용 리전으로 변경
)
# 사용할 모델 ID (예: Claude Sonnet 4)
MODEL_ID = "us.anthropic.claude-sonnet-4-5"
# 메시지 구성
messages = [
{
"role": "user",
"content": [
{"text": "AWS Bedrock에 대해 한 문장으로 설명해줘."}
]
}
]
# Converse API 호출
response = client.converse(
modelId=MODEL_ID,
messages=messages,
inferenceConfig={
"maxTokens": 512,
"temperature": 0.7
}
)
# 응답 텍스트 추출
output = response["output"]["message"]["content"][0]["text"]
print(output)
모델 ID는 us.* 접두사가 붙은 크로스 리전 추론 프로파일 ID를 사용하거나, 특정 리전의 단일 모델 ID(예: anthropic.claude-3-5-sonnet-20241022-v2:0)를 사용합니다. 크로스 리전 프로파일은 트래픽을 여러 리전에 자동 분산해 가용성을 높입니다.
리전별 모델 가용성 — 배포 전 반드시 확인
Claude 모델은 모든 리전에서 동일하게 제공되지 않습니다. 지연 시간을 줄이려고 ap-northeast-2(서울)를 선택했다가 원하는 모델이 없어 오류가 발생하는 경우가 많습니다.
Claude 4 계열은 us-east-1(버지니아), us-west-2(오레곤) 등 주요 리전에서 먼저 출시됩니다. ap-northeast-2(서울)는 지원 모델 수가 적어 최신 버전이 없을 수 있습니다.
us.* 접두사 크로스 리전 프로파일 ID를 사용하면 AWS가 미국 내 가용 리전에 자동 분산합니다. 최신 리전 목록은 AWS 공식 문서 “Regional availability” 페이지(docs.aws.amazon.com/bedrock)에서 확인하세요.
데이터 레지던시(데이터가 특정 국가 밖으로 나가면 안 되는 규제) 요건이 없다면 us-east-1을 기본으로 사용하고, 응답 지연이 중요하면 ap-northeast-1(도쿄)을 먼저 검토하세요.
비용과 할당량 관리
AWS Bedrock은 토큰(token, AI가 텍스트를 처리하는 단위로 대략 한글 1~2음절) 수 기준으로 과금됩니다. 한도를 초과하면 ThrottlingException 오류가 발생하는데, AWS 콘솔 → Service Quotas → Amazon Bedrock에서 리전별 분당 요청 수(RPM) 한도를 확인하고 필요하면 증가 신청을 할 수 있습니다. 비용 급증을 막으려면 AWS Budgets(예산 알림 도구)도 설정해두세요.
자주 나오는 질문
Q1) 모델 액세스를 요청했는데 “Access denied” 오류가 계속 납니다.
IAM 정책에 bedrock:InvokeModel 권한이 있는지, 그리고 코드에 지정한 리전과 콘솔에서 모델을 승인한 리전이 일치하는지 확인하세요. 리전이 다르면 승인 상태와 무관하게 호출이 거부됩니다.
Q2) Converse API와 InvokeModel API 중 어떤 것을 써야 하나요?
신규 프로젝트라면 Converse API가 좋습니다. 모델을 교체해도 요청 코드 구조가 거의 같고 다중 턴 대화(이전 대화를 함께 전달하는 방식)도 자연스럽게 지원합니다. InvokeModel은 모델 고유 파라미터를 세밀하게 다루거나 스트리밍을 직접 구현할 때 씁니다.
Q3) 서울 리전(ap-northeast-2)에서 Claude 최신 모델을 못 찾겠습니다.
서울 리전은 Claude 모델 지원이 제한적입니다. us-east-1이나 us-west-2로 리전을 바꿔 확인하거나, us.* 접두사 크로스 리전 추론 프로파일 ID를 사용하면 AWS가 자동으로 최적 리전에서 처리합니다.
Q4) boto3 없이 HTTP로 직접 호출할 수 있나요?
가능합니다. AWS SigV4 서명 헤더를 직접 구성해 bedrock-runtime.{region}.amazonaws.com에 POST 요청을 보내면 됩니다. 다만 서명 로직 구현이 번거로우므로 Python 외 언어라면 각 언어용 AWS SDK 사용을 권장합니다.