Claude Platform on AWS
Claude Platform on AWS
Anthropic이 관리하는 인프라로 Claude 플랫폼의 전체 기능을 AWS에서 사용하는 방법을 다뤄요. Messages API, Agent Skills, 코드 실행, 베타 기능까지 포함해요.
출처: 문서
본문
Claude Platform on AWS는 Messages API, Agent Skills, 코드 실행, 베타 기능 등 Anthropic 플랫폼의 전체 기능을 AWS 계정을 통해 사용할 수 있게 해줘요. AWS가 추론 스택을 운영하는 Amazon Bedrock과 달리, Claude Platform on AWS는 Anthropic이 운영해요. AWS는 인증 계층(SigV4 또는 API 키), IAM 기반 접근 제어, 그리고 AWS Marketplace를 통한 결제 통합을 제공해요.
플랫폼 통합이 작동하는 방식
Claude 모델은 Anthropic이 관리하는 인프라에서 실행돼요. 이것은 AWS를 통한 결제와 접근을 위한 상업적 통합이에요. Anthropic은 추론 입력과 출력의 데이터 처리자(data processor)예요. AWS는 마켓플레이스 모델 아래에서 결제·신원 메타데이터를 처리해요. Claude Platform on AWS를 통해 Claude를 사용하는 고객에게는 Anthropic의 데이터 사용 약관이 적용돼요.
Anthropic은 API 요청을 처리하고 모델 추론을 실행하며 워크스페이스 콘텐츠(프롬프트, 출력, 파일, Skills, 배치 등)를 저장하기 위해 AWS 인프라를 사용해요. 2026년 9월 18일 00:00 UTC 이전에 생성된 워크스페이스의 경우, Anthropic이 AWS 밖에서 요청을 처리하거나 데이터를 저장하거나 추론을 실행할 수도 있어요. 어느 쪽이든 하위 서비스가 예고 없이 바뀔 수 있어요. 추론을 특정 지리적 위치에 고정하려면 요청별로 inference_geo 파라미터를 설정하세요.
Claude Platform on AWS는 퍼스트파티 Claude API와 동일한 데이터 보존 정책을 따르는대요. 제로 데이터 보존(ZDR)은 요청 시 제공돼요. 조직에서 활성화하려면 Anthropic 계정 담당자에게 문의하세요.
Claude Platform on AWS와 Amazon Bedrock 비교
두 상품 모두 AWS를 통해 Claude를 사용할 수 있게 해주지만, 아키텍처와 API 표면, 기능 제공 범위에서 차이가 있어요.
| Aspect | Claude Platform on AWS | Claude in Amazon Bedrock | Amazon Bedrock (Opus 4.6 and earlier) |
|---|---|---|---|
| Who operates the stack | Anthropic | AWS | AWS |
| API surface | Claude API (/v1/{endpoint}) |
Messages API at /anthropic/v1/messages |
Bedrock Converse / InvokeModel |
| Feature availability | Typically same-day as Claude API (see feature limitations) | Per Amazon Bedrock release schedule | Per Amazon Bedrock release schedule |
| Agent Skills | Available in beta (no beta header needed, same behavior as on the Claude API) | Not available (requires code execution) | Not available |
| Beta features | Pass through with anthropic-beta headers (see feature limitations) |
anthropic-beta header not supported |
anthropic-beta header not supported |
| Authentication | AWS IAM / SigV4 or API key | AWS IAM / SigV4 | AWS IAM / SigV4 or bearer token |
| Billing | AWS Marketplace | AWS (native service) | AWS (native service) |
| Base URL | aws-external-anthropic.{region}.api.aws |
bedrock-mantle.{region}.api.aws |
bedrock-runtime.{region}.amazonaws.com |
| SDK client | Platform-specific client class (for example, AnthropicAWS in Python), in beta |
AnthropicBedrockMantle |
AnthropicBedrock / Bedrock SDK |
| Console | Claude Console (platform.claude.com, access through the AWS Console) |
Bedrock Console | Bedrock Console |
| Rate limits and quotas | Managed by Anthropic | Managed by AWS | Managed by AWS |
| Inference data processor | Anthropic | AWS | AWS |
AWS가 운영하는 Claude가 필요하다면 Claude in Amazon Bedrock을 보세요. Claude Platform on AWS는 퍼스트파티 Claude API와 Amazon Bedrock 모두와 분리된 용량 풀을 사용해요. 여러 플랫폼에서 워크로드를 실행하고 그 사이에서 장애 조치(failover)할 수 있어요.
VPC를 Claude Platform on AWS 엔드포인트에 연결하기 위해 AWS PrivateLink가 지원돼요.
Bedrock을 고를 때: FedRAMP High, IL4, IL5, HIPAA-ready 규정 준수가 필요하거나 AWS가 유일한 데이터 처리자여야 하는 규제 산업의 조직은 Claude in Amazon Bedrock을 사용해야 해요. Bedrock은 AWS가 운영 주체인, 완전히 AWS가 통제하는 인프라에서 실행돼요.
어떤 상품을 쓰고 있나요? Claude는 여러 서로 다른 제품으로 제공돼요:
- Claude Platform on AWS (이 페이지): AWS Marketplace를 통해 결제되는 Claude API 플랫폼이에요. Claude Console과 AWS Console에서 관리해요.
- Claude in Amazon Bedrock: AWS 네이티브 서비스예요. Amazon Bedrock 콘솔에서 관리하고 AWS 서비스 사용으로 청구돼요.
- AWS Marketplace로 조달한 Claude Enterprise: API 플랫폼이 아니라 claude.ai 플랜(Claude 채팅 제품)이에요. claude.ai에서 관리하며, 계정과 마이그레이션 동작이 이 페이지의 설명과 달라요. Claude Help Center를 참고하세요.
- 직접 Anthropic 계정: Anthropic이 청구하는 퍼스트파티 Claude API와 claude.ai 플랜이에요. Claude Console과 claude.ai에서 관리해요.
계정 설정하기
Claude Platform on AWS 설정은 네 단계로 진행돼요. AWS Console 서비스 페이지에서 가입하고, Anthropic 조직 설정을 완료하고, 워크스페이스 ID를 기록하고, Claude Console에 로그인하면 돼요.
기존 Amazon Bedrock 프라이빗 오퍼가 있다면, 첫 요청부터 할인이 적용되도록 가입 전에 Anthropic이나 AWS 계정 담당자에게 문의하세요. 할인은 프라이빗 오퍼가 수락되기 전에 발생한 사용량에는 소급 적용되지 않아요. 프라이빗 오퍼를 참고하세요.
페이지에 Sign-up in progress(가입 진행 중) 배너가 나타나요. 페이지에 머물러 있으세요. AWS가 AWS Marketplace 구독을 처리하는 동안 가입에 몇 분이 걸리고, 그 다음 자동으로 리다이렉트돼요.
조직에 Anthropic의 프라이빗 오퍼가 있다면, Console이 그것을 찾아 AWS Marketplace에서 수락하라고 안내해요. 자세한 내용은 프라이빗 오퍼를 참고하세요.
<Note>
Claude Platform on AWS를 사용하면 Anthropic이 콘텐츠(프롬프트와 출력 등)를 AWS 인프라에서 처리하고 저장해요. 2026년 9월 18일 00:00 UTC 이전에 생성된 워크스페이스의 경우, Anthropic이 그 콘텐츠를 AWS 밖에서 처리·저장할 수도 있어요. Anthropic의 데이터 사용 정책이 콘텐츠와 메타데이터가 어떻게 처리·저장되는지 설명해요.
- 조직 소유자의 이메일 주소를 입력하고 Get started(시작하기) 를 선택해요.
- 해당 이메일 받은편지함에서 설정 링크를 확인하고 따라가요. 브라우저에 Signed in as a different account(다른 계정으로 로그인됨) 페이지가 표시되면 Log out and continue(로그아웃하고 계속) 를 선택해요.
- 조직 세부 정보 양식(조직 이름, 법인 유형, 국가, 의도된 용도)을 작성하고 Complete setup(설정 완료) 을 선택해요.
설정을 완료하면 Anthropic 조직이 생성되고 Anthropic 상업 서비스 약관과 사용 정책에 동의하는 거예요. AWS Console 서비스 페이지에는 이제 Home, API keys, Quickstart, Workspaces 왼쪽 내비게이션이 표시돼요.
워크스페이스 ID는 AWS Console Claude Platform on AWS 서비스 페이지의 Workspaces 아래나 Claude Console에서 찾을 수 있어요. 워크스페이스 ID는 wrkspc_ 뒤에 영숫자 식별자가 붙는 형식이에요.
aws-external-anthropic:AssumeConsole권한이 있는 IAM 역할을 수임해요. Claude Platform on AWS의 IAM 액션을 참고하세요.- Claude Platform on AWS 서비스 페이지에서 Open Claude Console을 선택해요. AWS Console이 JWT를 발급하고
platform.claude.com으로 리다이렉트해요. - 첫 로그인 시 이메일 주소를 입력하라는 안내가 나와요. 업무 이메일을 입력하세요. 플랫폼이 Claude Console 사용자를 그때그때(just-in-time) 프로비저닝해요.
AWS Console을 통해 로그인하면 Claude Console이 Claude Platform on AWS 조직에 범위가 한정돼요. Claude Console 사이드바 왼쪽 하단에 Account managed by AWS 표시가 나타나요.
기존 Anthropic 조직에서 이전하기
Claude Platform on AWS에 가입하면 항상 AWS 계정에 연결된 새 Anthropic 조직이 프로비저닝돼요. 제자리 전환이 없어요. 퍼스트파티 Claude API 조직 같은 기존 조직은 Claude Platform on AWS 조직이 될 수 없어요.
기존 조직에서의 이전을 새 조직으로의 컷오버로 계획하세요:
- 새 조직을 먼저 만드세요. AWS Console을 통해 가입해요(계정 설정 참고). 이전에 프라이빗 오퍼가 관련돼 있다면 오퍼가 수락되기 전에 가입을 마치세요. 할인은 수락 시점부터 적용되고 소급되지 않아요. 프라이빗 오퍼를 참고하세요.
- 접근과 구성을 다시 만드세요. API 키, 워크스페이스, Claude Console 설정은 기존 조직에서 이어지지 않아요. 새 조직에 워크스페이스를 만들고 애플리케이션을 Claude Platform on AWS 인증으로 전환해요.
- 통합을 업데이트하세요. Claude Platform on AWS는 Claude API(
/v1/{endpoint})를 제공하므로 요청·응답 형태는 퍼스트파티 Claude API와 동일해요. 달라지는 것은 베이스 URL, 인증 방식, 그리고 추론·리소스 요청의anthropic-workspace-id헤더예요. 요청 만들기를 참고하세요. 일부 플랫폼 기능은 다를 수 있어요. 지원되지 않는 기능을 참고하세요. - 자신의 일정에 맞춰 컷오버하세요. 새 조직은 기존 조직과 독립적이며 둘 다 병렬로 트래픽을 처리할 수 있어요. 강제 컷오버가 필요 없어요. 모든 트래픽이 새 조직으로 옮겨갈 때까지 워크로드를 점진적으로 이동하세요.
새 조직이 실행되면 차이는 결제와 인증에 집중되며, 이 둘은 AWS를 통해 처리돼요:
- 결제는 AWS Marketplace로 이동해요. 선불 크레딧이 아닌 Claude Consumption Units로 사용량이 청구되고(결제 참고), Billing 페이지에서 지출 한도를 설정해요(지출 한도 참고). 전환 기간 동안 결제는 분리되어 있어요. 기존 조직은 지금처럼 계속 청구돼요.
- 인증과 접근은 AWS로 이동해요. 요청은 Claude Console이 아닌 AWS Console에서 생성된 AWS 자격 증명이나 API 키로 인증해요(인증 참고). 조직 멤버십은 Claude Console 대신 AWS IAM으로 관리하고(사용 가능한 페이지 참고), Anthropic 클라이언트 SDK가 플랫폼 전용 클라이언트 클래스를 제공해요(SDK 설치 참고).
- 일상적인 API 사용은 기능 제한에서 언급된 경우를 제외하고 퍼스트파티 Claude API와 똑같이 작동해요. 프로덕션 트래픽을 옮기기 전에 레이트 한도를 확인하세요. 새 조직은 Start 티어에 배치되고, 한도 증가는 Anthropic 계정 담당자를 통해 진행돼요(레이트 한도와 쿼터 참고).
다르게 동작하는 Claude Enterprise(claude.ai) 조직에 대해서는 상품 비교를 참고하세요.
계정 설정 문제 해결
- "Sign-up failed: Failed to enable OutboundWebIdentityFederation": 첫 제출 시 이 배너가 보이면 Continue를 다시 선택해요. IAM 활성화가 적용되는 데 잠시 걸릴 수 있어요.
- 가입 중 진행 표시가 없을 때: 가입은 몇 분 걸려요. AWS가 계정을 프로비저닝하는 동안 페이지는 진행률 바 없이 정적인 Sign-up in progress 배너만 표시해요.
- 설정 링크를 따라간 뒤 "Signed in as a different account": Log out and continue를 선택해요. 페이지가 입력한 이메일 주소로 다시 인증해요.
- 로그인 중 "Not found" 메시지: 이 메시지는 리다이렉트 중 잠깐 나타날 수 있어요. 닫아버리면 돼요.
- 첫 API 호출 후 Usage 페이지에 데이터가 없을 때: 사용량 데이터는 Claude Console에 나타나기까지 몇 분 걸릴 수 있어요.
- 첫 API 호출에서 "Outbound web identity federation is disabled": 계정당 한 번 페더레이션을 활성화해요. 아웃바운드 웹 ID 페더레이션 활성화를 참고하세요.
API 호출 전에
다음을 준비했는지 확인하세요:
- Claude Platform on AWS 구독이 있는 활성 AWS 계정(계정 설정 참고)
- 설치되고 구성된 AWS CLI
- AWS 계정에서 아웃바운드 웹 ID 페더레이션을 활성화(일회성 설정 단계, 아웃바운드 웹 ID 페더레이션 활성화 참고)
- 워크스페이스 ID(워크스페이스 ID 얻기 참고)
- API를 호출할 IAM 권한: 워크스페이스의
aws-external-anthropic:CreateInference액션, 그리고 API 키로 인증한다면aws-external-anthropic:CallWithBearerToken(IAM 정책 참고)
아웃바운드 웹 ID 페더레이션 활성화
Claude Platform on AWS 게이트웨이는 서버 측에서 sts:GetWebIdentityToken을 호출해 Anthropic으로 전달할 JWT를 만드는데, 이 STS 기능은 모든 AWS 계정에서 기본적으로 비활성이에요. 계정당 한 번 활성화하세요:
aws iam enable-outbound-web-identity-federation
응답이 [ERROR] (FeatureEnabled) ... already enabled라면 설정이 이미 켜져 있는 것이므로 그냥 진행하면 돼요. 계정의 발급자(issuer) URL을 확인하고 가져오세요:
aws iam get-outbound-web-identity-federation-info
워크스페이스 ID 얻기
계정 설정을 마친 뒤 AWS Console에서 워크스페이스를 만들어요(계정 설정 참고). 워크스페이스는 단일 AWS 지역에 바인딩돼요. 워크스페이스 ID는 Claude Console의 Workspaces 아래나 AWS Console 서비스 페이지의 Workspaces 섹션에서 찾을 수 있어요.
SDK 클라이언트가 자동으로 읽도록 ANTHROPIC_AWS_WORKSPACE_ID와 AWS_REGION 환경 변수를 설정하세요:
export ANTHROPIC_AWS_WORKSPACE_ID='wrkspc_01AbCdEf23GhIj'
export AWS_REGION='us-west-2' # Your workspace's AWS region
지역은 필수예요. 지역이 설정되지 않으면 SDK 클라이언트가 오류를 던져요. 생성자에 aws_region/awsRegion을 전달하거나 AWS_REGION(또는 AWS_DEFAULT_REGION)을 설정하세요. 모든 AWS 상용 지역이 지원돼요.
인증
Claude Platform on AWS는 두 가지 인증 방식을 지원해요. 요청 서명(Signature Version 4, SigV4)을 쓰는 AWS IAM(기본)과 API 키 인증이에요. 둘 다 같은 베이스 URL과 요청 형식을 사용해요.
SigV4 인증
SigV4는 엔터프라이즈 네이티브 경로로, 기존 AWS IAM 정책·역할·감사와 통합돼요. AWS 기본 자격 증명 공급자 체인이 지원하는 어떤 방법으로든 AWS 자격 증명을 구성하세요:
- 환경 변수(
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_SESSION_TOKEN) - 공유 자격 증명 파일(
~/.aws/credentials) - SSO와
credential_process를 포함한 공유 구성 파일(~/.aws/config) - IRSA와 GitHub Actions를 위한 웹 ID(
AWS_WEB_IDENTITY_TOKEN_FILE과AWS_ROLE_ARN) - ECS 컨테이너 자격 증명
- EC2 인스턴스 메타데이터 서비스(IMDS)
자격 증명이 작동하는지 확인하세요:
aws sts get-caller-identity
API 키 인증
더 간단한 통합 경로(로컬 개발과 스크립트)에서는 SigV4 대신 API 키로 인증할 수 있어요. ANTHROPIC_AWS_API_KEY 환경 변수를 설정하거나 SDK 생성자에 apiKey를 전달하면 돼요.
API 키는 AWS Console의 Claude Platform on AWS → API keys 아래에서 생성해요. Generate a key를 선택한 뒤 키 값을 복사하세요. API 키 인증을 허용할 보안 주체(principal)에게 aws-external-anthropic:CallWithBearerToken IAM 액션을 부여해요.
단기 API 키
자격 증명을 별도 프로세스(예: LLM 게이트웨이, 서버리스 함수, 또는 SigV4는 아니지만 베어러 토큰 인증을 지원하는 도구)에 넘겨야 하는 워크로드에서는 AWS Console에 장기 키를 프로비저닝하는 대신 AWS 자격 증명에서 단기 API 키를 생성하세요.
AWS는 JavaScript, Python, Java용 토큰 생성 라이브러리를 배포해요. 각 라이브러리는 표준 공급자 체인을 통해 AWS 자격 증명을 읽고, x-api-key 헤더에서 작동하는 시간 제한 토큰을 반환해요. 토큰 수명은 기본 12시간이고, 요청한 기간·AWS 자격 증명 만료·12시간 중 더 짧은 값으로 제한돼요. 설치와 전체 구성 옵션은 링크된 저장소의 README를 참고하세요.
생성된 토큰을 AWS Console에서 생성한 API 키를 전달하는 것과 같은 방법으로 SDK에 전달하세요:
token = TokenGenerator(region="us-west-2").get_token()
client = AnthropicAWS(api_key=token, aws_region="us-west-2")
```typescript TypeScript
import { getTokenProvider } from "@aws/token-generator-for-aws-external-anthropic";
import AnthropicAws from "@anthropic-ai/aws-sdk";
const tokenProvider = getTokenProvider({ region: "us-west-2" });
const token = await tokenProvider();
const client = new AnthropicAws({ apiKey: token, awsRegion: "us-west-2" });
import software.amazon.awsexternalanthropic.TokenGenerator;
import software.amazon.awssdk.regions.Region;
import com.anthropic.aws.backends.AwsBackend;
import com.anthropic.client.AnthropicClient;
import com.anthropic.client.okhttp.AnthropicOkHttpClient;
void main() {
String token = TokenGenerator.builder().region(Region.US_WEST_2).build().getToken();
AnthropicClient client = AnthropicOkHttpClient.builder()
.backend(AwsBackend.builder()
.apiKey(token)
.region(Region.US_WEST_2)
.workspaceId(System.getenv("ANTHROPIC_AWS_WORKSPACE_ID"))
.build())
.build();
}
토큰을 로컬에서 생성할 수 있다면 프로세스가 이미 SigV4 자격 증명을 갖고 있는 것이므로, 보통 SigV4 인증이 더 간단한 선택이에요. API를 호출하는 프로세스와 AWS 자격 증명을 보유한 프로세스가 분리되어 있을 때 단기 키를 사용하세요.
SDK는 단기 키를 자동으로 갱신하지 않아요. 토큰이 만료되면 새로 생성하고 새 클라이언트를 구성하세요. 토큰을 사용하는 보안 주체에게는 여전히 aws-external-anthropic:CallWithBearerToken IAM 액션이 필요해요.
자격 증명 우선순위
플랫폼 전용 클라이언트는 다음 순서로 인증을 해결해요. 인자 이름은 언어 관례에 따라 달라요. TypeScript와 PHP는 표시된 대로 camelCase를, Python과 Ruby는 snake_case를, Go는 대문자 약어가 포함된 PascalCase를, C#과 Java는 언어의 속성·빌더 관용구를 사용해요.
apiKey생성자 인자 →x-api-key헤더awsAccessKey+awsSecretAccessKey생성자 인자 → AWS SigV4awsProfile생성자 인자 → 명명된 프로필이 있는 AWS SigV4ANTHROPIC_AWS_API_KEY환경 변수 →x-api-key헤더- 기본 AWS 자격 증명 공급자 체인 → AWS SigV4
지역 해석
클라이언트는 생성자에 aws_region/awsRegion이 전달되지 않으면 환경에서 AWS_REGION을 읽고, 표준 AWS SDK와의 호환성을 위해 AWS_DEFAULT_REGION으로 폴백해요. 지역은 필수이고 기본값이 없어요. AnthropicAWS/AnthropicAws 클라이언트는 생성자 인자도 환경 변수도 설정되지 않으면 오류를 던져요.
SDK 설치
Anthropic의 클라이언트 SDK는 Claude Platform on AWS를 지원해요. 각 SDK는 SigV4 서명, 지역 기반 베이스 URL 구성, 그리고 anthropic-workspace-id 헤더를 처리하는 플랫폼 전용 클라이언트 클래스를 제공해요.
<Tip>
macOS의 Homebrew Python이나 기타 외부 관리 Python 환경에서는 pip install이 PEP 668 externally-managed-environment 오류로 실패할 수 있어요. 먼저 가상 환경을 만들고 활성화하세요: python3 -m venv .venv && source .venv/bin/activate.
```xml Maven
<dependency>
<groupId>com.anthropic</groupId>
<artifactId>anthropic-java</artifactId>
<version>2.65.0</version>
</dependency>
<dependency>
<groupId>com.anthropic</groupId>
<artifactId>anthropic-java-aws</artifactId>
<version>2.65.0</version>
</dependency>
```
사용 가능한 모델
Claude Platform on AWS에서 사용할 수 있는 모델은 다음과 같아요:
| Model | Model ID |
|---|---|
| Claude Fable 5.1 | claude-fable-5-1 |
| Claude Fable 5 | claude-fable-5 |
| Claude Opus 5.5 | claude-opus-5-5 |
| Claude Opus 5 | claude-opus-5 |
| Claude Opus 4.8 | claude-opus-4-8 |
| Claude Opus 4.7 | claude-opus-4-7 |
| Claude Opus 4.6 | claude-opus-4-6 |
| Claude Opus 4.5 | claude-opus-4-5 |
| Claude Sonnet 5 | claude-sonnet-5 |
| Claude Sonnet 4.6 | claude-sonnet-4-6 |
| Claude Sonnet 4.5 | claude-sonnet-4-5 |
| Claude Haiku 4.5 | claude-haiku-4-5 |
모델 ID는 퍼스트파티 Claude API와 동일해요. Bedrock 스타일 ARN이나 anthropic. 접두사가 없어요.
새 모델은 보통 퍼스트파티 Claude API와 같은 날에 Claude Platform on AWS에서 출시돼요.
요청 만들기
Claude Platform on AWS는 퍼스트파티 Claude API와 동일한 API 엔드포인트를 사용해요. 차이점은 베이스 URL, 인증 방식, 그리고 요청이 대상으로 하는 워크스페이스를 식별하는 anthropic-workspace-id 헤더예요. 이 헤더는 Messages API, Models API, Files API, Claude Managed Agents 엔드포인트 호출 같은 추론·리소스 요청에서 필수예요. Admin API 워크스페이스와 외부 키 엔드포인트에 대한 요청에는 필요하지 않아요.
이 예제들을 실행하기 전에 API 호출 전에의 단계를 먼저 완료하세요.
# Replace us-west-2 with your AWS region
# ant reads ANTHROPIC_API_KEY and sends it as x-api-key. Generate a key in the
# AWS Console (see API key authentication).
export ANTHROPIC_API_KEY="YOUR_AWS_API_KEY"
ant messages create \
--base-url https://aws-external-anthropic.us-west-2.api.aws \
--workspace-id "$ANTHROPIC_AWS_WORKSPACE_ID" \
--model claude-sonnet-5 \
--max-tokens 1024 \
--message '{role: user, content: "Hello!"}' \
--transform content
from anthropic import AnthropicAWS
client = AnthropicAWS()
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello!"}],
)
print(message)
import AnthropicAws from "@anthropic-ai/aws-sdk";
const client = new AnthropicAws();
const message = await client.messages.create({
model: "claude-sonnet-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello!" }]
});
console.log(message);
using Anthropic;
using Anthropic.Aws;
var client = new AnthropicAwsClient();
var message = await client.Messages.Create(new()
{
Model = Model.ClaudeSonnet5,
MaxTokens = 1024,
Messages = [new() { Role = Role.User, Content = "Hello!" }]
});
Console.WriteLine(message);
client, err := anthropicaws.NewClient(context.Background(), anthropicaws.ClientConfig{})
if err != nil {
panic(err)
}
message, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
Model: anthropic.ModelClaudeSonnet5,
MaxTokens: 1024,
Messages: []anthropic.MessageParam{
anthropic.NewUserMessage(anthropic.NewTextBlock("Hello!")),
},
})
if err != nil {
panic(err)
}
fmt.Println(message)
import com.anthropic.aws.backends.AwsBackend;
import com.anthropic.client.AnthropicClient;
import com.anthropic.client.okhttp.AnthropicOkHttpClient;
import com.anthropic.models.messages.Message;
import com.anthropic.models.messages.MessageCreateParams;
import com.anthropic.models.messages.Model;
void main() {
AnthropicClient client = AnthropicOkHttpClient.builder()
.backend(AwsBackend.fromEnv())
.build();
Message message = client.messages().create(
MessageCreateParams.builder()
.model(Model.CLAUDE_SONNET_5)
.maxTokens(1024)
.addUserMessage("Hello!")
.build()
);
IO.println(message);
}
use Anthropic\Aws\Client;
$client = new Client();
$message = $client->messages->create(
model: 'claude-sonnet-5',
maxTokens: 1024,
messages: [['role' => 'user', 'content' => 'Hello!']],
);
echo $message;
require "anthropic"
client = Anthropic::AWSClient.new
message = client.messages.create(
model: "claude-sonnet-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello!" }]
)
puts message
클라이언트는 환경에서 AWS_REGION(또는 AWS_DEFAULT_REGION)과 ANTHROPIC_AWS_WORKSPACE_ID를 읽어요. 생성자에 aws_region/awsRegion이나 workspace_id/workspaceId를 전달해 둘 중 하나를 재정의할 수 있어요. 지역과 워크스페이스 ID 모두 필수예요. 어느 하나라도 해석할 수 없으면 생성자가 오류를 던져요.
--aws-sigv4 값은 aws:amz:<region>:<service> 형식을 따르는대요. SigV4 서비스 이름은 aws-external-anthropic이고, 지역은 엔드포인트 URL의 지역과 일치해야 해요. 어느 쪽이든 불일치하면 구체적인 진단이 아닌 일반적인 서명 거부 오류가 발생해요.
컨텍스트 윈도우
Claude Platform on AWS의 컨텍스트 윈도우 크기는 퍼스트파티 Claude API와 동일해요. 모델별 한도는 컨텍스트 윈도우를 참고하세요.
기능 지원
Claude Platform on AWS는 Claude API 엔드포인트를 직접 사용하므로 퍼스트파티 Claude API와 완전한 기능 동등성을 제공해요(기능 제한에서 언급된 경우 제외):
- 기능 접근: Anthropic이 두 플랫폼을 모두 운영하므로, 대부분의 새 기능과 베타 헤더는 별도 통합 단계 없이 Claude Platform on AWS에서 사용할 수 있게 돼요. 예외는 기능 제한을 참고하세요.
- 베타 기능: Claude API에서와 마찬가지로 표준
anthropic-beta헤더를 전달해 베타 기능에 접근할 수 있어요. - Agent Skills: Claude API와 동일한
container.skills파라미터로 사전 구축된 Agent Skills와 커스텀 Skill를 사용할 수 있어요. 모든 사전 구축 Skill(PowerPoint, Excel, Word, PDF)은 별도 설정 없이 바로 작동해요. - 코드 실행: 코드 실행 도구로 Anthropic의 관리형 샌드박스에서 코드를 실행해요.
- 도구 사용: Computer use와 모든 기타 도구 사용 기능을 사용할 수 있어요.
- 확장 사고(Extended thinking): Claude API와 동일한 파라미터로 확장 사고를 켤 수 있어요.
- 스트리밍: 실시간 응답을 위한 완전한 SSE 스트리밍을 지원해요.
- 배치 처리: 높은 처리량의 워크로드를 위해 배치 요청을 제출할 수 있어요.
- 프롬프트 캐싱: 지연과 비용을 줄이기 위해 도구, 시스템 프롬프트, 메시지 기록을 캐시할 수 있어요. 모든 프롬프트 캐싱 기능(5분 TTL, 1시간 TTL, 자동 캐싱)을 사용할 수 있어요.
- Files API: 요청 간에 파일을 업로드하고 참조할 수 있어요.
- 고객 관리 암호화 키(CMEK): CMEK는 AWS KMS 키에만 사용할 수 있어요. Google Cloud KMS와 Azure Key Vault 키는 등록할 수 없어요. 키는 연결할 워크스페이스와 같은 AWS 계정·지역에 있어야 하는 단일 지역 KMS 키여야 하고, 키 정책이
aws-external-anthropic.amazonaws.com서비스 주체에게 접근을 허용해야 해요. Claude Platform on AWS에서 CMEK 설정을 참고하세요. 키 등록·연결은 Claude Console에서 하고, 외부 키 엔드포인트도 사용할 수 있으며 IAM 액션으로 인가돼요. 별도 검증 단계는 없어요. 워크스페이스에 키를 연결할 때 암묵적으로 검증되므로(연결 호출이 암호화/복호화 왕복을 수행), 키 정책 문제는 등록 시점이 아니라 연결 시점에 드러나요. - Compliance API: Compliance API를 사용할 수 있어요. 접근은 AWS IAM
ListComplianceActivities액션으로 인가해요.
Amazon Bedrock과의 기능 제공 차이는 비교 표를 참고하세요.
Claude Managed Agents
Claude Managed Agents는 Claude Platform on AWS에서 사용할 수 있어요. 에이전트, 환경, 세션, 자격 증명 볼트, 메모리 스토어, 웹훅, 멀티에이전트 오케스트레이션, 셀프 호스팅 샌드박스를 포함해요.
Claude Platform on AWS의 세션 동작은 퍼스트파티 Claude Managed Agents와 두 가지 방식으로 달라요:
- 자율 세션 재인증: 세션은 사용자 이벤트 없이 최대 6시간 동안 자율적으로 실행될 수 있어요. 6시간이 지나면 세션은 계속되기 전에 재인증이 필요해요. 재인증하려면 세션에 사용자 역할 이벤트를 하나 보내면 돼요(이벤트와 스트리밍 참고). 퍼스트파티 Claude Managed Agents에는 자율 세션 실행 시간 제한이 없어요.
- 셀프 호스팅 환경의 메모리 스토어: 셀프 호스팅 환경에서 실행되는 세션은 메모리 스토어를 연결할 수 없어요. 하나를 포함한 세션은 생성 시 거부돼요. 클라우드 환경의 세션은 평소처럼 메모리 스토어를 연결해요. 퍼스트파티 Claude Managed Agents에서는 클라우드와 셀프 호스팅 환경 모두에서 세션이 메모리 스토어를 연결할 수 있어요.
지원되지 않는 기능
다음 기능은 현재 Claude Platform on AWS에서 사용할 수 없어요:
- HIPAA 준비: Anthropic의 HIPAA-ready 프로그램을 사용할 수 없어요. API 및 데이터 보존을 참고하세요.
- Computer use 및 browser use 도구셋:
computer_toolset_20260801과browser_toolset_20260801은 현재 Claude Platform on AWS에서 사용할 수 없어요. 베타 computer use 도구 버전은 계속 사용할 수 있어요.
- Admin API: 워크스페이스 엔드포인트(
/v1/organizations/workspaces의 create, get, list, update, archive)와 외부 키 엔드포인트(/v1/organizations/external_keys의 register, get, list, update, delete, CMEK용. 키는 validate 엔드포인트가 아닌 워크스페이스 연결 시 검증돼요)를 사용할 수 있어요. 기타 Admin API 엔드포인트(조직 멤버, 워크스페이스 멤버, 초대, API 키, 사용량 보고서, 비용 보고서, 레이트 한도 보고서)는 현재 사용할 수 없어요. 사용량과 비용 데이터는 Claude Console에서 대신 확인하세요. 조직 멤버십은 AWS IAM이 관리해요. - 워크스페이스 멤버 관리: 개별 워크스페이스에 사용자를 추가하거나 제거할 수 없어요. 워크스페이스 ARN의 AWS IAM 정책이 접근을 제어해요.
- Claude Code 워크스페이스 및 Analytics API: 자동 레이트 한도가 있는 Claude Code 워크스페이스를 사용할 수 없어요. Claude Code 사용량은 전용 화면이 아닌 일반 사용량 보기에 표시돼요.
- OAuth 인증: 지원되지 않아요. SigV4나 API 키 인증을 사용하세요.
- Fast mode: Claude Platform on AWS에서는 사용할 수 없어요.
- OpenAI 호환 API 엔드포인트: Claude Platform on AWS에서는 사용할 수 없어요.
- MCP 터널: 공개 인터넷으로 노출된 MCP 서버만 지원돼요.
데이터 주권(Data residency)
Claude Platform on AWS는 다음 추론 지역을 지원해요:
- US: 추론이 미국 데이터 센터 안에서 유지돼요. 1.1배 가격 배율이 적용돼요.
- Global: 추론이 전 세계 Anthropic 운영 데이터 센터 어디로든 라우팅될 수 있어요. 표준 가격이 적용돼요.
inference_geo 파라미터로 요청별 추론 지역을 설정하세요:
# Replace us-west-2 with your AWS region
# ant reads ANTHROPIC_API_KEY and sends it as x-api-key. Generate a key in the
# AWS Console (see API key authentication).
export ANTHROPIC_API_KEY="YOUR_AWS_API_KEY"
ant messages create \
--base-url https://aws-external-anthropic.us-west-2.api.aws \
--workspace-id "$ANTHROPIC_AWS_WORKSPACE_ID" \
--model claude-sonnet-5 \
--max-tokens 1024 \
--inference-geo us \
--message '{role: user, content: "Hello!"}' \
--transform content
from anthropic import AnthropicAWS
client = AnthropicAWS()
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
inference_geo="us",
messages=[{"role": "user", "content": "Hello!"}],
)
print(message)
import AnthropicAws from "@anthropic-ai/aws-sdk";
const client = new AnthropicAws();
const message = await client.messages.create({
model: "claude-sonnet-5",
max_tokens: 1024,
inference_geo: "us",
messages: [{ role: "user", content: "Hello!" }]
});
console.log(message);
using Anthropic;
using Anthropic.Aws;
var client = new AnthropicAwsClient();
var message = await client.Messages.Create(new()
{
Model = Model.ClaudeSonnet5,
MaxTokens = 1024,
InferenceGeo = "us",
Messages = [new() { Role = Role.User, Content = "Hello!" }]
});
Console.WriteLine(message);
client, err := anthropicaws.NewClient(context.Background(), anthropicaws.ClientConfig{})
if err != nil {
panic(err)
}
message, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
Model: anthropic.ModelClaudeSonnet5,
MaxTokens: 1024,
InferenceGeo: anthropic.String("us"),
Messages: []anthropic.MessageParam{
anthropic.NewUserMessage(anthropic.NewTextBlock("Hello!")),
},
})
if err != nil {
panic(err)
}
fmt.Println(message)
import com.anthropic.aws.backends.AwsBackend;
import com.anthropic.client.AnthropicClient;
import com.anthropic.client.okhttp.AnthropicOkHttpClient;
import com.anthropic.models.messages.Message;
import com.anthropic.models.messages.MessageCreateParams;
import com.anthropic.models.messages.Model;
void main() {
AnthropicClient client = AnthropicOkHttpClient.builder()
.backend(AwsBackend.fromEnv())
.build();
Message message = client.messages().create(
MessageCreateParams.builder()
.model(Model.CLAUDE_SONNET_5)
.maxTokens(1024)
.inferenceGeo("us")
.addUserMessage("Hello!")
.build()
);
IO.println(message);
}
use Anthropic\Aws\Client;
$client = new Client();
$message = $client->messages->create(
model: 'claude-sonnet-5',
maxTokens: 1024,
inferenceGeo: 'us',
messages: [['role' => 'user', 'content' => 'Hello!']],
);
echo $message;
require "anthropic"
client = Anthropic::AWSClient.new
message = client.messages.create(
model: "claude-sonnet-5",
max_tokens: 1024,
inference_geo: "us",
messages: [{ role: "user", content: "Hello!" }]
)
puts message
inference_geo를 생략하면 요청은 워크스페이스의 default_inference_geo가 구성되어 있으면 그것을, 아니면 global을 사용해요.
워크스페이스 수준 추론 지역 제어(allowed_inference_geos와 default_inference_geo)도 Claude Platform on AWS에서 사용할 수 있어요. 워크스페이스 수준 제한을 참고하세요.
워크스페이스
Claude Platform on AWS의 추론·리소스 요청은 워크스페이스를 대상으로 해요. 이 API 호출에서 anthropic-workspace-id 헤더에 워크스페이스 ID를 전달해요. 워크스페이스 ID는 wrkspc_ 뒤에 영숫자 식별자가 붙는 태그 형식이에요(예: wrkspc_01AbCdEf23GhIj). 아직 없으면 워크스페이스 ID 얻기를 참고하세요.
워크스페이스 범위 지정
워크스페이스는 단일 AWS 지역에 바인딩돼요. us-west-2에서 만든 워크스페이스는 us-west-2 엔드포인트로만 접근할 수 있어요. 사용량, 쿼터, 비용, 파일, 배치, Skills는 모두 워크스페이스별로 집계되어, Claude Console에서 지역별 내역을 볼 수 있어요.
워크스페이스는 Claude Platform on AWS의 기본 IAM 리소스이기도 해요. 워크스페이스 ARN을 사용해 AWS IAM 정책으로 특정 워크스페이스에 대한 접근을 허용하거나 거부해요. ARN의 리소스 세그먼트는 anthropic-workspace-id 헤더에 전달하는 것과 같은 wrkspc_ 접두사 ID예요:
arn:aws:aws-external-anthropic:{region}:{account-id}:workspace/{workspace-id}
예를 들어:
arn:aws:aws-external-anthropic:us-west-2:123456789012:workspace/wrkspc_01AbCdEf23GhIj
정책 예시는 IAM 정책을 참고하세요.
워크스페이스 관리
AWS Console Workspaces 페이지나 Admin API 워크스페이스 엔드포인트로 추가 워크스페이스를 만들거나, 이름을 바꾸거나, 보관(archive)할 수 있어요. 이 엔드포인트들은 anthropic-workspace-id 헤더가 필요하지 않아요. create와 list는 조직을 대상으로 하고, get·update·archive는 URL 경로에 워크스페이스 ID를 받아요. 새 워크스페이스는 그것을 만드는 호출 엔드포인트의 AWS 지역에 바인딩돼요(워크스페이스 범위 지정 참고). Admin 역할이면 Claude Console Workspaces 페이지에서도 워크스페이스를 만들고, 이름을 바꾸고, 보관할 수 있어요.
Claude Console 사용하기
Claude Platform on AWS는 platform.claude.com의 표준 Claude Console을 사용해요. AWS Console에서 로그인하면 Claude Console 사이드바 왼쪽 하단에 Account managed by AWS 표시가 나타나고 Console이 Claude Platform on AWS 조직으로 범위가 한정돼요. 여기서 사용량 분석, 비용 내역, 레이트 한도 확인, 워크스페이스 관리, 그리고 파일·Agent Skills·배치 작업·Claude Managed Agents 리소스(에이전트, 세션, 환경, 자격 증명 볼트, 메모리 스토어, 웹훅) 관리를 위한 페이지를 제공해요.
로그인
Claude Console 접근은 AWS IAM을 통해 페더레이션돼요. 전체 첫 로그인 절차는 계정 설정을 참고하세요. 간단히 말하면:
aws-external-anthropic:AssumeConsole권한이 있는 IAM 역할을 수임해요. Claude Platform on AWS의 IAM 액션을 참고하세요.- AWS Console에서 Claude Platform on AWS 페이지로 이동해요.
- Open Claude Console을 선택해요. AWS Console이 JWT를 발급하고
platform.claude.com으로 리다이렉트해요. - 첫 로그인 시 이메일 주소를 입력하라는 안내가 나와요. 업무 이메일을 입력하세요. 플랫폼이 Claude Console 사용자를 그때그때 프로비저닝해요.
두 가지 Claude Console 역할이 있어요. Admin과 Developer예요. Admin 역할은 Claude Platform on AWS에 사용할 수 있는 모든 Claude Console 페이지와 설정에 대한 접근을 부여해요. Developer 역할은 사용량, 비용, 레이트 한도, 워크스페이스 정보에 대한 읽기 접근을 부여해요. 보안 주체에 Admin이나 Developer 역할을 부여하려면 Anthropic 계정 담당자에게 문의하세요.
사용 가능한 페이지
Through AWS gateway 열은 페이지가 AWS 게이트웨이를 통해 데이터를 읽고 쓰는지(따라서 IAM 액션의 적용을 받는지)를 나타내요. No로 표시된 페이지는 조직 수준 메타데이터를 Anthropic에서 직접 읽고 IAM 액션 검사를 우회해요.
| Page | Available | Through AWS gateway | Notes |
|---|---|---|---|
| Usage | Yes | No | View token usage by model, workspace, and dimension. Data can take a few minutes to appear after a request. |
| Cost | Yes | No | View cost breakdowns by model and workspace. AWS Cost Explorer shows the aggregated Claude Consumption Unit (CCU) line item. |
| Rate limits | Yes | No | View rate limits (read-only). Tier increases go through your Anthropic account representative; see Rate limits and quotas. |
| Workspaces | Yes | Yes (except spend limits) | View per-region workspaces. With the Admin role, you can also create, rename, and archive workspaces, and set per-workspace spend limits. |
| Encryption keys | Yes | Yes | Under Settings → Encryption keys, register AWS KMS keys for CMEK (Admin role). To attach a registered key to a workspace, go to Manage → Security and select the workspace in the workspace picker at the top of the sidebar. |
| Files | Yes | Yes | View and manage uploaded files. |
| Skills | Yes | Yes | View and manage Agent Skills. |
| Batches | Yes | Yes | View and manage batch processing jobs. |
| Agents | Yes | Yes | View and manage agent definitions. |
| Sessions | Yes | Yes | View agent sessions and event history. |
| Environments | Yes | Yes | View and manage cloud sandbox configurations for sessions. |
| Credential vaults | Yes | Yes | View and manage credential vaults for session authentication. |
| Memory stores | Yes | Yes | View and manage persistent agent memory. |
| Webhooks | Yes | Yes | View and manage webhook endpoints under Settings → Webhooks. |
| API keys | No | N/A | Manage API keys in the AWS Console (Claude Platform on AWS → API keys). See API key authentication. |
| Members | No | N/A | Not applicable. AWS IAM manages access. |
| Billing | Yes (limited) | No | Set an organization monthly spend limit; see Spend limits. AWS Marketplace manages invoicing. View cost breakdowns on the Cost page. |
| Claude Code | No | N/A | View Claude Code usage on the Usage page. |
조직 전환
Claude Console은 Claude Platform on AWS에서 조직 전환을 지원하지 않아요. 다른 조직에 접근하려면 해당 조직 AWS 계정의 IAM 역할을 사용해 로그아웃한 뒤 AWS Console을 통해 다시 인증하세요.
레이트 한도와 쿼터
Claude Platform on AWS의 조직은 Start 티어에 배치돼요. Anthropic은 레이트 한도를 AWS 쿼터 시스템이 아닌 직접 관리해요.
Claude Platform on AWS 조직은 유료 AWS Marketplace 인보이스 기록을 쌓으면서 더 높은 사용량 티어로 자동 이동할 수 있어요. Claude Console의 셀프 서비스 Request rate limit increase 절차는 사용할 수 없어요. Rate limits 페이지는 대신 Anthropic 계정 담당자에게 안내해요.
더 높은 한도를 요청하려면 Anthropic 계정 담당자나 Anthropic 지원에 문의하세요. 요청에 다음을 포함하세요:
- 한도를 올려야 하는 모델
- 각 모델의 분당 최대 입력 토큰과 분당 출력 토큰(일일 합계가 아님)
- 캐시되거나 반복되는 컨텍스트가 차지하는 입력의 대략적 비율(대부분의 모델에서 캐시 읽기는 입력 토큰 한도에 계산되지 않아요. 캐시 인지 ITPM 참고)
사용량 티어는 고정된 단계예요. 각 티어는 레이트 한도와 월간 지출 상한을 짝지어 두고, 더 높은 티어로 이동하면 둘 다 올라가요. 티어 세부 사항과 모델별 한도는 레이트 한도를 참고하세요.
결제
Claude Platform on AWS는 AWS Marketplace를 통해 결제해요. 사용량은 Claude Consumption Units(CCU)로 표시되고 시간 단위로 계량되며, AWS 청구서에 월 단위로 소급 청구돼요. CCU는 선불 크레딧이 아니에요. CCU 잔액이나 커밋먼트가 없어요.
CCU 가격, 변환 메커니즘, 할인 적용, 모델별 토큰 요율은 Claude Platform on AWS 가격을 참고하세요.
지출 한도
Start, Build, Scale 사용량 티어는 각각 월간 지출 상한을 갖고 있어요. 현재 값은 티어별 지출 상한을 참고하세요. 조직의 역월 사용량이 티어 상한에 도달하면, 다음 달 1일 00:00 UTC까지 API 요청이 지출 상한 오류로 실패하고, 더 일찍 재시도해도 성공하지 않아요. 지출 상한과 레이트 한도는 같은 티어에 속해요. 상한을 올리거나 상한 도달 후 접근을 복원하려면 Anthropic 계정 담당자나 Anthropic 지원을 통해 티어 증가를 요청하세요(레이트 한도와 쿼터 참고).
Billing 페이지의 Email recipients 아래에 수신자를 최소 한 명 추가하면, 상한보다 낮은 월간 지출 한도를 직접 설정할 수도 있어요:
- 조직 지출 한도: Claude Console의 Settings > Billing으로 가서 월간 지출 한도를 설정해요.
- 워크스페이스 지출 한도: Settings > Workspaces 아래에서 워크스페이스를 선택하고 Spend limits 페이지를 열어요.
설정한 한도에 사용량이 도달하면, 다음 달 1일 00:00 UTC까지 또는 한도를 올리거나 제거하기 전까지 요청이 HTTP 400으로 실패해요(지출 한도 오류 참고).
지출은 정가로 계산되고 최근 사용량이 반영되기까지 약 2시간 걸릴 수 있으므로, 요청이 실패하기 시작하기 전에 사용량이 상한이나 한도를 초과할 수 있어요. 초과분은 청구돼요. 티어 상한이나 조직 지출 한도가 요청을 막으면 Billing 페이지의 Email recipients 아래에 나열된 수신자에게 이메일 알림이 가요. all admins 같은 역할 기반 수신자는 Claude Platform on AWS에서 사용할 수 없어요. 티어 상한 알림은 AWS Marketplace 가입에 사용한 이메일 주소로도 가요.
모니터링과 로깅
AWS CloudTrail은 Claude Platform on AWS에 대한 모든 요청을 캡처할 수 있어요. 워크스페이스, 외부 키, 컴플라이언스, 볼트, 웹훅 작업은 기본적으로 Management 이벤트로 기록돼요. 추론, 배치, 파일, 스킬, 모델, 사용자 프로필, Claude Managed Agents 작업(볼트와 웹훅 제외)은 Data 이벤트로 분류되어 명시적 데이터 이벤트 로깅 구성을 요구하며, 추가 CloudTrail 비용이 발생해요. 전체 이벤트 유형 분류는 IAM 액션 레퍼런스를, 구성 세부 사항은 AWS CloudTrail 문서를 참고하세요.
요청 ID
각 응답에는 응답 헤더에 두 개의 요청 ID가 포함돼요:
- AWS 요청 ID(
x-amzn-requestid): 기본 ID로, CloudTrail에 인덱싱돼요. AWS 도구로 요청을 조사하거나 AWS 지원에 문의할 때 사용해요. - Anthropic 요청 ID(
request-id): 보조 ID예요. Anthropic 지원에 문의할 때 사용해요.
# The ant CLI's output formats print the response body, not response headers.
# To read x-amzn-requestid, use the cURL example (-i) or an SDK example.
from anthropic import AnthropicAWS
client = AnthropicAWS()
response = client.messages.with_raw_response.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello!"}],
)
print(response.headers.get("x-amzn-requestid")) # AWS request ID
print(response.headers.get("request-id")) # Anthropic request ID
message = response.parse()
print(message.content)
import AnthropicAws from "@anthropic-ai/aws-sdk";
const client = new AnthropicAws();
const { data: message, response } = await client.messages
.create({
model: "claude-sonnet-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello!" }]
})
.withResponse();
console.log(response.headers.get("x-amzn-requestid")); // AWS request ID
console.log(response.headers.get("request-id")); // Anthropic request ID
console.log(message.content);
using Anthropic;
using Anthropic.Aws;
var client = new AnthropicAwsClient();
var response = await client.WithRawResponse.Messages.Create(new()
{
Model = Model.ClaudeSonnet5,
MaxTokens = 1024,
Messages = [new() { Role = Role.User, Content = "Hello!" }]
});
Console.WriteLine(response.Headers.GetValues("x-amzn-requestid").First()); // AWS request ID
Console.WriteLine(response.Headers.GetValues("request-id").First()); // Anthropic request ID
Console.WriteLine(response.Value.Content);
client, err := anthropicaws.NewClient(context.Background(), anthropicaws.ClientConfig{})
if err != nil {
panic(err)
}
var response *http.Response
message, err := client.Messages.New(
context.Background(),
anthropic.MessageNewParams{
Model: anthropic.ModelClaudeSonnet5,
MaxTokens: 1024,
Messages: []anthropic.MessageParam{
anthropic.NewUserMessage(anthropic.NewTextBlock("Hello!")),
},
},
option.WithResponseInto(&response),
)
if err != nil {
panic(err)
}
fmt.Println(response.Header.Get("x-amzn-requestid")) // AWS request ID
fmt.Println(response.Header.Get("request-id")) // Anthropic request ID
fmt.Println(message.Content)
import com.anthropic.aws.backends.AwsBackend;
import com.anthropic.client.AnthropicClient;
import com.anthropic.client.okhttp.AnthropicOkHttpClient;
import com.anthropic.core.http.HttpResponseFor;
import com.anthropic.models.messages.Message;
import com.anthropic.models.messages.MessageCreateParams;
import com.anthropic.models.messages.Model;
void main() {
AnthropicClient client = AnthropicOkHttpClient.builder()
.backend(AwsBackend.fromEnv())
.build();
HttpResponseFor<Message> response = client.messages().withRawResponse().create(
MessageCreateParams.builder()
.model(Model.CLAUDE_SONNET_5)
.maxTokens(1024)
.addUserMessage("Hello!")
.build()
);
IO.println(response.headers().values("x-amzn-requestid").get(0)); // AWS request ID
IO.println(response.requestId().orElse(null)); // Anthropic request ID
IO.println(response.parse().content());
}
use Anthropic\Aws\Client;
$client = new Client();
$response = $client->messages->raw->create(
model: 'claude-sonnet-5',
maxTokens: 1024,
messages: [['role' => 'user', 'content' => 'Hello!']],
);
echo $response->getHeaderLine('x-amzn-requestid') . "\n"; // AWS request ID
echo $response->getHeaderLine('request-id') . "\n"; // Anthropic request ID
echo $response->parse()->content;
# Accessing raw response headers is not currently supported in the Ruby SDK.
# To inspect the x-amzn-requestid header, use one of the other SDK examples.
Anthropic은 사용 패턴을 이해하고 문제를 조사하기 위해 최소 30일 롤링 기준으로 활동을 로깅할 것을 권장해요.
Amazon Bedrock에서 마이그레이션
현재 Bedrock에서 Claude를 사용하고 있다면, Claude Platform on AWS로의 마이그레이션은 통합 전반에 걸친 변경을 요구해요. SigV4 서명은 계속 지원되지만, 서명 컨텍스트, 베이스 URL, API 형식, 모델 ID, SDK 클라이언트와 패키지, 스트리밍 형식, 요청 헤더, 지역 제공 범위가 모두 바뀌어요. Claude Platform on AWS는 또한 새 Anthropic 조직을 프로비저닝해요. 다음 표가 차이를 요약해줘요.
무엇이 바뀌나요
마이그레이션 델타는 어느 Bedrock 통합에서 오느냐에 따라 달라요. 다음 표는 현재 Bedrock 통합(bedrock-mantle.{region}.api.aws의 Messages API)과 레거시 InvokeModel 통합을 모두 보여줘요.
| Aspect | From Claude in Amazon Bedrock | From Amazon Bedrock (Opus 4.6 and earlier) | To Claude Platform on AWS |
|---|---|---|---|
| Base URL | bedrock-mantle.{region}.api.aws |
bedrock-runtime.{region}.amazonaws.com |
aws-external-anthropic.{region}.api.aws |
| API format | Messages API at /anthropic/v1/messages |
Bedrock Converse / InvokeModel | Claude API (/v1/{endpoint}) |
| Model IDs | anthropic.claude-haiku-4-5 | anthropic.claude-haiku-4-5-20251001-v1:0(with a us. or global. inference profile prefix) |
claude-haiku-4-5 |
| SDK client | AnthropicBedrockMantle |
AnthropicBedrock / Bedrock SDK |
Platform-specific client (see Install an SDK), in beta |
| SDK package | anthropic[bedrock], @anthropic-ai/bedrock-sdk, and others |
anthropic[bedrock], @anthropic-ai/bedrock-sdk, or AWS SDK |
anthropic[aws], @anthropic-ai/aws-sdk, and others (see Install an SDK) |
| SigV4 service name | bedrock-mantle |
bedrock |
aws-external-anthropic |
| Streaming format | SSE | AWS EventStream | SSE (same as Claude API) |
| Workspace header | Not applicable | Not applicable | anthropic-workspace-id, required on inference and resource requests |
| Region availability | See Amazon Bedrock regions | See Amazon Bedrock regions | All AWS commercial regions |
| Anthropic organization | None required | None required | New organization created at sign-up. Existing organizations can't be converted (see Moving from an existing Anthropic organization) |
현재 Bedrock 통합을 쓰고 있다면 요청 본문 형식은 이미 Messages API예요. 바뀌는 것은 베이스 URL, SigV4 서비스 이름, 모델 ID, 그리고 anthropic-workspace-id 헤더 추가예요. 레거시 InvokeModel 또는 Converse API를 쓰고 있다면 요청·응답 형태도 Messages API 형식으로 다시 써야 해요. 요청 형태 매핑은 Claude on Amazon Bedrock (Opus 4.6 및 이전)을 참고하세요.
무엇을 얻나요
- 일반적으로 새 모델·기능에 대한 당일 접근(기능 제한 참고)
- 문서 생성을 위한 Agent Skills(PowerPoint, Excel, Word, PDF)
- Anthropic 관리형 샌드박스에서의 코드 실행
anthropic-beta헤더를 통한 베타 기능(기능 제한 참고)- 쿼터 가시성과 사용량 분석을 위한 Claude Console
- 직접적인 Anthropic 지원
- SigV4의 대안인 API 키 인증(API 키 인증 참고)
무엇이 그대로인가요
- AWS IAM 인증(SigV4)
- AWS가 청구 주체인 것. 결제 채널은 네이티브 AWS 서비스에서 AWS Marketplace로 바뀌어요(상업적 고려사항 참고).
- AWS 커밋먼트(commitment) 퇴역
마이그레이션 함정
상업적 고려사항
- Anthropic 서비스 약관: Claude Platform on AWS를 사용하려면 Anthropic의 상업 서비스 약관과 사용 정책에 동의해야 해요. 조직이 아직 이에 동의하지 않았다면(예: Bedrock으로만 Claude를 사용했다면) 계정 설정 중에 안내가 나와요. 계정 설정을 참고하세요.
- 할인과 프라이빗 오퍼: 협상된 할인과 AWS Marketplace 프라이빗 오퍼는 Bedrock과 Claude Platform on AWS 사이에서 자동으로 이전되지 않아요. Claude Platform on AWS 상업 조건을 설정하려면 Anthropic 계정 담당자와 협력하세요.
IAM 정책
Claude Platform on AWS는 접근 제어를 위해 AWS IAM과 통합돼요. 표준 IAM 정책 문법을 사용해 특정 워크스페이스의 특정 API 액션에 대한 접근을 허용하거나 거부해요.
SigV4 서비스 이름과 IAM 액션 네임스페이스는 aws-external-anthropic이에요. 액션은 aws-external-anthropic:<Action> 패턴을 따르는대요(예: aws-external-anthropic:CreateInference).
예시: 배치 추론 거부
다음 정책은 실시간 추론을 허용하면서 배치 처리를 차단해요:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"aws-external-anthropic:CreateInference",
"aws-external-anthropic:CountTokens",
"aws-external-anthropic:GetModel",
"aws-external-anthropic:ListModels",
"aws-external-anthropic:GetWorkspace"
],
"Resource": "arn:aws:aws-external-anthropic:*:*:workspace/*"
},
{
"Effect": "Allow",
"Action": "aws-external-anthropic:ListWorkspaces",
"Resource": "*"
},
{
"Effect": "Deny",
"Action": [
"aws-external-anthropic:CreateBatchInference",
"aws-external-anthropic:GetBatchInference",
"aws-external-anthropic:ListBatchInferences"
],
"Resource": "*"
}
]
}
GetBatchInference 액션은 배치 메타데이터 라우트와 배치 결과 라우트를 모두 인가해요. 그것을 거부하면 두 읽기 모두 차단돼요. ZDR 민감 워크로드에 적합한 Deny 전용 정책은 ZDR 민감 워크스페이스의 기능 잠금을 참고하세요.
이 정책은 AWS SigV4 인증을 가정해요. 보안 주체가 API 키로 인증한다면 "Resource": "*" Allow 문에 aws-external-anthropic:CallWithBearerToken도 추가하세요. CallWithBearerToken은 워크스페이스 ARN에 바인딩되지 않는 라우트 없는 인증 계층 액션이에요. 두 문 패턴은 고객별 워크스페이스 격리를 참고하세요.
관리형 정책
AWS는 일반적인 접근 패턴을 위해 다섯 개의 관리형 정책(AnthropicFullAccess, AnthropicReadOnlyAccess, AnthropicInferenceAccess, AnthropicLimitedAccess, AnthropicSelfHostedEnvironmentAccess)을 제공해요. 각 정책이 부여하는 액션, 전체 IAM 액션 목록, 라우트-액션 매핑, 추가 정책 예시는 Claude Platform on AWS의 IAM 액션을 참고하세요.