본문으로 건너뛰기

AWS Bedrock을 Cursor와 함께 사용하기 (BYOK)

AWS Bedrock BYOK in Cursor

Bring Your Own Key(BYOK)를 사용하면 Cursor의 내장 모델 라우팅 대신 이미 비용을 지불하고 있는 모델 제공자로 Cursor를 지정할 수 있습니다. AWS Bedrock은 이미 제어하는 AWS 계정 뒤에 Anthropic Claude 및 기타 최전선 모델을 호스팅하기 때문에 가장 흔한 선택 중 하나입니다. 이 가이드는 BYOK란 무엇인지, 특히 Bedrock을 선택하는 이유, Cursor에서 구성하는 방법, 결제와 비용 제어가 어떻게 작동하는지, 그리고 혼란스러운 "Invalid signature in thinking block is bound to a different conversation"을 포함하여 가장 많이 마주칠 오류를 해결하는 방법을 안내합니다.

BYOK란 무엇이며 언제 사용하나요​

BYOK는 자체 제공자 자격 증명을 제공하고, 제공자가 소비한 토큰에 대해 직접 청구하는 것을 의미합니다. Cursor에서 모델은 여전히 Cursor의 인터페이스와 기능을 통해 실행되지만, 추론 요청은 Cursor의 계정이 아니라 사용자의 계정으로 갑니다.

일반적으로 다음과 같은 경우 BYOK를 원합니다:

  • 이미 약정된 클라우드 지출이 있는 경우. 조직에 AWS 약정이나 엔터프라이즈 할인이 있다면, Bedrock을 통한 모델 트래픽 라우팅은 새 항목을 추가하는 대신 그 지출을 사용합니다.
  • 규정 준수가 특정 경계를 요구하는 경우. Bedrock은 데이터를 AWS 계정과 리전 안에 유지하여 데이터 상주 및 보안 검토를 단순화합니다.
  • 조달이 단일 벤더를 선호하는 경우. AWS를 통해 구매하는 것이 계약에 별도의 AI 벤더를 추가하는 것보다 종종 쉽습니다.

BYOK가 항상 더 저렴한 것은 아닙니다. Cursor의 포함 및 사용량 기반 가격은 소규모 팀에게 Bedrock을 능가할 수 있고, 할당량 관리를 직접 맡게 됩니다. 가격만이 아니라 제어와 규정 준수를 위해 BYOK를 선택하세요.

BYOK는 채팅당이 아니라 모델 제공자당입니다

Cursor에서는 Settings > Models에서 제공자를 활성화합니다. Bedrock이 활성화되고 자격 증명이 저장되면 선택한 Bedrock 모델 ID가 모델을 선택하는 모든 곳에서 선택 가능해집니다. 다른 모델에 대해 Bedrock에 묶이는 것은 아닙니다.

BYOK vs Cursor의 내장 라우팅​

확정하기 전에 두 경로를 나란히 보는 것이 도움이 됩니다.

차원Cursor의 내장 모델Bedrock을 사용한 BYOK
결제Cursor가 청구AWS가 직접 청구
자격 증명Cursor가 관리AWS 키를 직접 제공하고 교체
할당량Cursor가 관리모델별 할당량을 직접 관리
규정 준수Cursor의 경계자체 AWS 계정과 리전
설정 노력없음IAM, 모델 액세스, 제공자 구성
모델 목록Cursor가 큐레이션리전이 노출하는 모든 것

속도에 최적화된 솔로 개발자라면 내장 라우팅에 머무르세요. AWS 청구서, 리전 및 IAM 정책이 모두 자신의 것이어야 하는 조직에 있다면 BYOK가 정답입니다.

왜 AWS Bedrock인가​

Bedrock은 모델 자체가 아니라 호스팅된 추론 계층입니다. Anthropic Claude, Amazon Nova, Meta Llama, Mistral 등을 단일 AWS API를 통해 노출합니다. 그 단일 API가 엔터프라이즈 사용에 매력적인 이유입니다.

  • 규정 준수와 거버넌스. 요청과 데이터가 기존 제어와 감사 로그 아래에 있는 자체 AWS 계정과 리전 안에 머무릅니다.
  • 기존 AWS 지출. 모델 사용량이 AWS 청구서에 나타나고 기존 약정으로 충당될 수 있습니다.
  • 데이터 상주. 리전을 직접 선택하며, 규정이 데이터를 한 국가에 두도록 요구할 때 중요합니다.
  • 엔터프라이즈 조달. AWS는 대부분의 대형 조직에서 이미 승인된 벤더입니다.

트레이드오프는 거울상입니다: 할당량, IAM 설정, 문제 해결을 직접 소유합니다.

사전 요구 사항​

Cursor를 구성하기 전에 AWS 측에서 다음을 준비하세요.

AWS 계정 및 모델 액세스​

청구가 활성화된 AWS 계정이 필요합니다. Bedrock 콘솔에서 모델 액세스는 모델별로 옵트인 방식이므로, 사용하려는 Anthropic Claude 모델에 대한 액세스를 명시적으로 요청해야 합니다. 일부 모델은 자동으로 부여되고, 다른 모델은 수락 단계나 짧은 사용 사례 양식이 필요합니다.

IAM 권한​

여전히 작동하는 가장 좁은 권한으로 Cursor용 IAM 사용자나 역할을 만드세요. 최소한 Cursor는 모델을 호출하고 나열해야 합니다.

IAM 권한Cursor가 필요한 이유
bedrock:InvokeModel모델에 비스트리밍 요청을 보냄
bedrock:InvokeModelWithResponseStream스트리밍 요청을 보내며, 채팅 UI가 사용하는 방식
bedrock:ListFoundationModels모델 선택기를 채우고 모델 ID를 검증

Bedrock의 Claude 모델에는 보통 모델 ARN 또는 더 간단히 리전의 추론 프로필로 범위가 지정된 bedrock:InvokeModel도 필요합니다. 정책을 좁게 유지하고 광범위한 관리자 정책을 연결하지 마세요.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CursorBedrockInvoke",
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream"
],
"Resource": [
"arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-sonnet-4-5-v1:0",
"arn:aws:bedrock:us-east-1:123456789012:inference-profile/us.anthropic.claude-sonnet-4-5-v1:0"
]
},
{
"Sid": "CursorBedrockList",
"Effect": "Allow",
"Action": "bedrock:ListFoundationModels",
"Resource": "*"
}
]
}

이 정책을 기존 관리자 ID를 재사용하지 말고 Cursor 전용 IAM 사용자나 역할에 연결하세요. 조직이 단기 자격 증명을 사용한다면 정적 키를 만드는 대신 역할을 수임하고 세션 토큰을 주기적으로 갱신하세요.

Cursor 구성 전 액세스 확인​

먼저 명령줄에서 자격 증명이 작동함을 증명하세요. 여기서 호출이 실패하면 Cursor에서도 실패하며, 혼란스러운 왕복을 스스로 줄인 것입니다.

# Confirm the configured identity is the one you expect
aws sts get-caller-identity

# List the models your region exposes
aws bedrock list-foundation-models \
--region us-east-1 \
--query "modelSummaries[?contains(modelId, 'anthropic')].[modelId]" \
--output table

나열은 작동하지만 호출이 실패하면 문제는 자격 증명이 아니라 모델 액세스나 특정 모델 ID입니다.

리전 선택​

원하는 모델이 제공되고 데이터가 상주하도록 허용된 리전을 선택하세요. 일부 모델은 추론 프로필 접두사를 통해 교차 리전 추론이 지원되므로 단일 리전에 제한되지 않을 수 있습니다.

Cursor에서 Bedrock 구성하기​

Cursor는 Models 설정에서 BYOK 제공자를 노출합니다. 흐름은 모든 제공자에 대해 동일한 형태입니다.

  1. Cursor Settings > Models를 엽니다.
  2. AWS Bedrock 제공자를 찾아 활성화합니다.
  3. AWS 액세스 키 ID, 비밀 액세스 키 및 리전을 입력합니다.
  4. 선택기에 표시할 모델 ID를 선택합니다.
  5. 저장하고 채팅으로 돌아간 다음 Bedrock 모델을 선택합니다.

자격 증명 필드​

Cursor는 리전이 지정된 구성이 필요합니다. Bedrock 제공자 블록은 대략 다음과 같습니다:

{
"provider": "bedrock",
"aws_access_key_id": "AKIAIOSFODNN7EXAMPLE",
"aws_secret_access_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"aws_region": "us-east-1",
"models": [
"anthropic.claude-sonnet-4-5-v1:0",
"anthropic.claude-3-5-haiku-v1:0"
]
}

개발자 머신에는 장기 IAM 액세스 키를 최후의 수단으로 선호하세요. 팀에는 임시 세션이나 수임 역할을 사용하여 키가 디스크에 평문으로 저장되지 않게 하세요.

모델 ID와 교차 리전 추론​

Bedrock 모델 ID는 예측 가능한 형태를 따릅니다: 벤더, 제품군, 버전. 일부 모델은 추론 프로필 접두사를 요구하며, 이는 가용성과 처리량을 위해 요청을 리전 간에 라우팅합니다.

# Direct model IDs (region-scoped)
anthropic.claude-sonnet-4-5-v1:0
anthropic.claude-3-5-haiku-v1:0

# Cross-region inference profile IDs (note the region prefix)
us.anthropic.claude-sonnet-4-5-v1:0
eu.anthropic.claude-sonnet-4-5-v1:0
apac.anthropic.claude-sonnet-4-5-v1:0

활성화했는데도 모델이 액세스 오류를 반환하면 거의 항상 모델 ID가 원인입니다: 선택한 리전에 us. 또는 eu. 접두사가 필요한지 확인하세요.

액세스 키는 시크릿입니다

액세스 키를 채팅, 규칙 파일 또는 공유 스크린샷에 붙여넣지 마세요. Cursor가 제공자 자격 증명을 저장하는 곳에 저장하고, 노출되었다고 의심되는 키는 교체하세요. 위의 예시 키는 실제 자격 증명이 아니라 AWS의 공개 문서 자리 표시자입니다.

Cursor에서 연결 확인하기​

제공자 구성을 저장한 후 실제 작업이 아니라 사소한 프롬프트로 배선을 확인하여 실패가 명확하게 드러나게 하세요.

  1. 새 채팅을 열고 모델 선택기에서 Bedrock 모델 ID 중 하나를 선택합니다.
  2. "reply with the word ready"처럼 작은 것을 요청합니다.
  3. 응답이 오면 자격 증명, 리전 및 모델 ID가 모두 올바른 것입니다.
  4. 실패하면 아래 CLI 호출 테스트를 다시 실행하고 오류 텍스트를 Cursor가 표시하는 것과 비교하세요.
# Invoke the model directly so you can see the raw error text
aws bedrock-runtime invoke-model \
--model-id anthropic.claude-sonnet-4-5-v1:0 \
--region us-east-1 \
--body '{"anthropic_version":"bedrock-2023-05-31","max_tokens":16,"messages":[{"role":"user","content":"reply with the word ready"}]}' \
--cli-binary-format raw-in-base64-out \
/tmp/out.json && cat /tmp/out.json

사용하는 각 모델에 대해 작동하는 CLI 명령을 유지하면 성공적인 호출이 어떤 모습인지 이미 알고 있으므로 Cursor의 오류 메시지가 모호한 것에서 해독 가능한 것으로 바뀝니다.

결제 및 비용 제어​

BYOK에서는 Cursor가 아니라 AWS가 토큰에 대해 청구합니다. 이는 예산을 세우고 모니터링하는 방식을 바꿉니다.

모델 가격​

Bedrock은 입력 및 출력 토큰당 청구하며 요율은 모델에 따라 다릅니다. 입력 토큰이 일반적으로 출력 토큰보다 저렴하고, 장문 컨텍스트 모델이 작은 것보다 토큰당 더 비쌉니다.

모델 제품군상대 입력 비용상대 출력 비용비고
Claude Sonnet 계열중간중간강력한 범용 코딩 기본값
Claude Haiku 계열낮음낮음빠르고 저렴하며 작은 편집에 좋음
Claude Opus 계열높음높음최고 추론, 최고 비용
Amazon Nova낮음낮음비용 효율적인 대안

비용 할당 및 모니터링​

Bedrock 사용량을 태그하여 귀속 가능하게 하고, 청구서가 아니라 지표를 지켜보세요.

# Enable cost allocation tags on the resources that call Bedrock
aws resourcegroupstaggingapi tag-resources \
--resource-arn-list arn:aws:bedrock:us-east-1:123456789012:inference-profile/us.anthropic.claude-sonnet-4-5-v1:0 \
--tags Project=cursor-byok Team=platform

CloudWatch에서 Bedrock 호출 지표를 추적하고 결제 알람을 설정하여 폭주하는 에이전트가 밤새 조용히 월 예산을 소비하지 않게 하세요.

# Quick cost sanity check: list recent Bedrock usage with Cost Explorer
aws ce get-cost-and-usage \
--time-period Start=2026-10-01,End=2026-10-20 \
--granularity DAILY \
--metrics BlendedCost \
--filter '{"Dimensions":{"Key":"SERVICE","Values":["Amazon Bedrock"]}}'

토큰 비용 줄이기​

BYOK는 토큰 미터를 사용자 손에 쥐여주므로 몇 가지 습관이 빠르게 이득이 됩니다:

  • 모델 크기를 적정하게 맞추세요. 작은 편집에는 Haiku 계열 모델을 사용하고 정말 어려운 추론에는 Opus 계열 모델을 남겨두세요.
  • 컨텍스트를 타이트하게 유지하세요. 비대해진 컨텍스트 창이 가장 큰 숨은 비용입니다. 스레드가 벗어나면 새 채팅을 시작하세요.
  • 작은 편집을 배치 처리하세요. 여러 개의 아주 작은 프롬프트가 같은 변경을 다루는 하나의 범위가 잘 정해진 프롬프트보다 더 비쌉니다.
  • 규칙을 다듬으세요. 모든 always-apply 규칙은 모든 요청에 전송되는 토큰이므로 .cursor/rules를 간결하게 유지하세요.
  • 첫 주를 지켜보세요. 첫 주에는 Cost Explorer를 매일, 이후에는 매주 검토하여 실제 기준선을 놀라기 전에 파악하세요.

"Invalid signature in thinking block" 오류 수정하기​

이것은 Cursor에서 가장 혼란스러운 Bedrock 오류입니다. API 키 문제처럼 들리지만 거의 항상 대화 상태 문제입니다. 전체 메시지는 다음과 같습니다:

Invalid `signature` in `thinking` block is bound to a different conversation

근본 원인​

Claude의 확장 사고는 생성된 정확한 대화와 턴에 바인딩된 서명을 지닌 암호화된 추론 블록을 생성합니다. 그 블록이 새 요청에 재생되면 서명된 내용이 더 이상 일치하지 않고 제공자가 전체 요청을 거부합니다. 이는 다음과 같은 경우 발생합니다:

  • 이전 턴의 확장 사고 블록이 이후 턴에 다시 전송될 때,
  • 프록시나 게이트웨이가 요청 본문을 캐시하고 재생할 때,
  • 스레드 중간에 모델을 전환한 후처럼 대화 상태가 오래되었거나 중복될 때.

수정​

다음 순서대로 진행하세요:

  1. 새 채팅을 시작하세요. 서명은 대화에 바인딩되므로 새 채팅이 신뢰할 수 있는 초기화입니다.
  2. 디버깅하는 동안 모델의 확장 사고를 비활성화하고, 흐름이 깨끗해지면 다시 활성화하세요.
  3. Cursor를 업데이트하세요. 사고 블록의 서명 처리가 최신 빌드에서 수정되었습니다. 오래된 클라이언트가 흔한 원인입니다.
  4. Cursor와 Bedrock 사이에서 요청 본문을 캐시하거나 재작성할 수 있는 중간 프록시나 게이트웨이를 제거하세요.
  5. 온도를 낮추고 스레드를 짧게 하여 컨텍스트에 누적되는 사고 블록 수를 줄이세요.
새 채팅이 먼저, 나머지는 그다음

90%의 경우 새 채팅을 시작하면 서명 오류가 즉시 해결됩니다. 완전히 새로운 채팅에서 재현된다면 그때 프록시와 클라이언트 버전을 살펴보세요.

Throttling 및 resource_exhausted 오류​

Bedrock은 계정별, 모델별 처리량 할당량을 적용합니다. 초과하면 깔끔한 실패가 아니라 throttling 또는 resource_exhausted 오류가 발생합니다.

ResourceNotFoundException / ServiceQuotaExceededException:
You have exceeded the rate of requests allowed for this model.

이것은 자격 증명 문제가 아니라 할당량 문제입니다. 두 가지 수정:

  • 모델이나 리전에 부하를 분산하세요. 교차 리전 추론 프로필은 정확히 용량을 풀링하기 위해 존재합니다.
  • 사용하는 Bedrock 모델에 대해 AWS Service Quotas 콘솔에서 할당량 증가를 요청하세요.
# List the Bedrock service quotas you can request increases for
aws service-quotas list-service-quotas \
--service-code bedrock \
--query "Quotas[?contains(QuotaName, 'Claude')].[QuotaName,QuotaCode,Value]" \
--output table

버스트 트래픽이 가라앉으면 오류가 보통 스스로 해소되지만, 만성적이라면 할당량 요청이 해결책입니다.

액세스, 리전 및 프록시 오류​

모델 액세스가 부여되지 않았을 때 액세스 거부​

AccessDeniedException: You don't have access to the model with the specified model ID

여기서 두 가지 원인이 지배적입니다:

  • 모델 액세스가 Bedrock 콘솔에서 부여되지 않았습니다. 콘솔을 열고 해당 특정 Anthropic 모델에 대한 액세스를 요청하세요.
  • IAM 정책이 너무 좁거나 모델 ID가 잘못되었습니다. 정책이 bedrock:InvokeModelWithResponseStream을 부여하고 모델 ID 문자열이 실제로 활성화한 모델과 일치하는지 확인하세요.

잘못된 리전​

Cursor의 구성된 리전이 모델을 호스팅하지 않거나 모델 ID에 교차 리전 접두사가 필요하면 키가 유효해도 요청이 실패합니다. Cursor의 리전이 모델 액세스를 활성화한 콘솔의 리전과 일치하는지 확인하세요.

기업 프록시 뒤의 스트리밍 실패​

스트리밍은 채팅의 기본값입니다. 기업 프록시와 TLS 검사 방화벽은 종종 text/event-stream 응답을 깨뜨리며, 이는 채팅이 멈추거나 부분 응답을 반환하는 것으로 나타납니다.

  • Bedrock 리전 엔드포인트(예: bedrock-runtime.us-east-1.amazonaws.com)를 화이트리스트에 추가하세요.
  • 프록시가 스트리밍 응답을 버퍼링하지 않는지 확인하세요. "streaming" 또는 "chunked transfer" 설정을 찾으세요.
  • 프록시를 피할 수 없다면 Cursor가 Bedrock 호스트에 대해 프록시를 우회할 수 있는지 확인하세요.

문제 해결 빠른 참조​

증상유력한 원인해결
thinking block의 Invalid signature대화 간에 재생된 사고 블록새 채팅 시작, 확장 사고 비활성화, Cursor 업데이트
resource_exhausted / throttling모델별 할당량 초과리전 간 분산, 할당량 증가 요청
AccessDeniedException모델 액세스 미부여 또는 정책이 너무 좁음콘솔에서 모델 활성화, IAM 정책 확대
한 리전에서 모델을 찾을 수 없음 / 액세스 없음잘못된 리전 또는 추론 프로필 접두사 누락리전 일치, us. / eu. 접두사 사용
스트림 출력 없이 채팅이 멈춤프록시가 text/event-stream을 버퍼링Bedrock 엔드포인트 화이트리스트, 프록시 버퍼링 비활성화
모델 선택기가 비어 있음bedrock:ListFoundationModels 누락권한 추가, 자격 증명 다시 저장
키 교체 후 인증 오류Cursor에 저장된 오래된 자격 증명Models 설정에서 액세스 키와 시크릿 재입력
로컬에서는 작동, CI에서 실패파이프라인에서 리전 또는 프로필 미전달CI 환경에서 리전과 프로필 설정

흐름이 안정되면 리전, 모델 ID 및 할당량 한도를 제공자 구성 옆에 짧게 메모해 두세요. 6개월 후 오류가 나타나면 그 메모가 2시간의 조사를 2분의 수정으로 바꿉니다.