Amazon Bedrock의 Claude

Amazon Bedrock의 Claude (Claude on Amazon Bedrock, Opus 4.6 이하)

이 페이지는 레거시 Amazon Bedrock 통합을 다뤄요. ARN 버전 모델 식별자와 AWS 이벤트 스트림 인코딩을 사용하는 InvokeModelConverse API요. Messages-API Bedrock 엔드포인트에서 사용 가능한 모델은 Amazon Bedrock의 Claude를 참고하세요. Messages API를 /anthropic/v1/messages에서 SSE 스트리밍으로 사용해요.

출처: 문서

본문

참고: 이 페이지는 레거시 Amazon Bedrock 통합을 다뤄요. ARN 버전 모델 식별자와 AWS 이벤트 스트림 인코딩을 사용하는 InvokeModelConverse API요. Messages-API Bedrock 엔드포인트에서 사용 가능한 모델은 Amazon Bedrock의 Claude를 참고하세요. Messages API를 /anthropic/v1/messages에서 SSE 스트리밍과 함께 사용해요. AWS Marketplace 청구와 보통 당일 기능 접근이 있는 Anthropic 운영 대안은 Claude Platform on AWS를 참고하세요. 기존 Bedrock 사용자는 마이그레이션 가이드를 따를 수 있어요.

Bedrock을 통해 Claude를 호출하는 것은 Claude API에서 직접 호출하는 것과 약간 달라요. 이 가이드는 Anthropic의 클라이언트 SDK 중 하나로 Bedrock에서 Claude에 API 호출을 완료하는 방법을 안내해요.

이 가이드는 AWS 계정에 가입하고 프로그래매틱 접근을 구성했다고 가정해요.

AWS CLI 설치 및 구성

  1. 버전 2.13.23 이상의 AWS CLI 버전을 설치하세요.
  2. AWS configure 명령으로 AWS 자격 증명을 구성하거나(AWS CLI 구성 참고), AWS 대시보드에서 "Command line or programmatic access"로 이동해 모달 창의 지침을 따라 자격 증명을 찾으세요.
  3. 자격 증명이 작동하는지 확인하세요:
aws sts get-caller-identity

Bedrock 접근용 SDK 설치하기

Anthropic의 클라이언트 SDK는 Bedrock을 지원해요. boto3 같은 AWS SDK를 직접 사용할 수도 있어요.

```bash pip install -U "anthropic[bedrock]" ``` ```bash npm install @anthropic-ai/bedrock-sdk ``` ```bash dotnet add package Anthropic.Bedrock ``` ```bash go get github.com/anthropics/anthropic-sdk-go/bedrock ``` ```groovy Gradle implementation("com.anthropic:anthropic-java:2.65.0") implementation("com.anthropic:anthropic-java-bedrock:2.65.0") ```
  ```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-bedrock</artifactId>
      <version>2.65.0</version>
  </dependency>
  ```

  ```java Java
  import com.anthropic.client.AnthropicClient;
  import com.anthropic.client.okhttp.AnthropicOkHttpClient;
  import com.anthropic.bedrock.backends.BedrockBackend;
  import com.anthropic.models.messages.MessageCreateParams;
  import com.anthropic.models.messages.Message;
  import com.anthropic.models.messages.Model;

  public class BasicMessage {
      public static void main(String[] args) {
          AnthropicClient client = AnthropicOkHttpClient.builder()
              .backend(BedrockBackend.fromEnv())
              .build();

          MessageCreateParams params = MessageCreateParams.builder()
              .model(Model.CLAUDE_OPUS_4_6)
              .maxTokens(1024L)
              .addUserMessage("What is the capital of France?")
              .build();

          Message response = client.messages().create(params);
          response.content().stream()
              .flatMap(block -> block.text().stream())
              .forEach(textBlock -> System.out.println(textBlock.text()));
      }
  }
  ```
</CodeGroup>
```bash composer require anthropic-ai/sdk aws/aws-sdk-php ``` ```bash # Gemfile gem "anthropic" gem "aws-sdk-bedrockruntime" ``` ```bash pip install "boto3>=1.28.59" ```

Bedrock 접근하기

Anthropic 모델 구독

AWS Console > Bedrock > Model Access로 가서 Anthropic 모델에 대한 접근을 요청하세요. Anthropic 모델 가용성은 지역에 따라 다릅니다. 최신 정보는 AWS 문서를 참고하세요.

API 모델 ID

참고: Claude Fable 5.1, Claude Fable 5, Claude Opus 5.5, Claude Opus 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7은 bedrock-runtime에서 InvokeModel로 도달할 수 있어요. 이 요청들은 Amazon Bedrock의 Claude 엔드포인트와 같은 인프라에서 서비스돼요. 네이티브 Messages API 요청 모양과 전체 기능 동등성을 원하면 그 페이지를 사용하세요. 이 모델들은 ARN 버전 모델 ID가 없으므로 이 페이지의 모델 표에서 생략돼요.

수명 주기 용어(Deprecated, Retired)는 모델 폐기에서 정의돼요. 파트너 운영 플랫폼의 수명 주기 날짜는 파트너가 정하며 Claude API 일정과 다를 수 있어요. Amazon Bedrock에서 어떤 모델의 현재 퇴역 날짜는 Amazon Bedrock의 모델 수명 주기 페이지를 참고하세요.

AWS는 교차 지역 추론을 통해 주문형 처리량이 아닌 더 새로운 Claude 모델을 제공해요. 이 모델에 대해 기본 모델 ID를 전달하는 요청은 다음과 같은 HTTP 400 오류로 실패해요:

Invocation of model ID anthropic.claude-sonnet-4-5-20250929-v1:0 with on-demand throughput isn't supported. Retry your request with the ID or ARN of an inference profile that contains this model.

이 모델들을 호출하려면 기본 모델 ID 대신 추론 프로필(inference profile)을 전달하세요. 추론 프로필 ID는 기본 모델 ID에 다음 표에서 "Yes"로 표시된 열의 접두사를 붙인 것입니다(예: us.anthropic.claude-sonnet-4-5-20250929-v1:0). 전체 추론 프로필 ARN을 arn:aws:bedrock:{region}:{account-id}:inference-profile/{inference-profile-id} 형식으로 전달할 수도 있어요. 사용 가능한 추론 프로필의 AWS 권위 있는 목록은 추론 프로필의 지원 지역 및 모델을 참고하세요. 접두사가 라우팅과 가격에 미치는 영향은 글로벌 대비 지역 엔드포인트 섹션을 참고하세요.

모델 기본 Bedrock 모델 ID global us eu jp apac
Claude Opus 4.6 anthropic.claude-opus-4-6-v1 Yes Yes Yes Yes Yes
Claude Sonnet 4.6 anthropic.claude-sonnet-4-6 Yes Yes Yes Yes No
Claude Sonnet 4.5 anthropic.claude-sonnet-4-5-20250929-v1:0 Yes Yes Yes Yes No
Claude Sonnet 4 Deprecated. anthropic.claude-sonnet-4-20250514-v1:0 Yes Yes Yes No Yes
Claude Sonnet 3.7 Retired. anthropic.claude-3-7-sonnet-20250219-v1:0 No No No No No
Claude Opus 4.5 anthropic.claude-opus-4-5-20251101-v1:0 Yes Yes Yes No No
Claude Opus 4.1 Deprecated. anthropic.claude-opus-4-1-20250805-v1:0 No Yes No No No
Claude Opus 4 Retired. anthropic.claude-opus-4-20250514-v1:0 No No No No No
Claude Haiku 4.5 anthropic.claude-haiku-4-5-20251001-v1:0 Yes Yes Yes No No
Claude Haiku 3.5 Deprecated. anthropic.claude-3-5-haiku-20241022-v1:0 No Yes No No No

사용 가능한 모델 나열

다음 예시는 Bedrock을 통해 사용 가능한 모든 Claude 모델 목록을 인쇄하는 방법을 보여줘요:

```bash AWS CLI aws bedrock list-foundation-models --region=us-west-2 --by-provider anthropic --query "modelSummaries[*].modelId" ```
import boto3

bedrock = boto3.client(service_name="bedrock")
response = bedrock.list_foundation_models(byProvider="anthropic")

for summary in response["modelSummaries"]:
    print(summary["modelId"])
import { BedrockClient, ListFoundationModelsCommand } from "@aws-sdk/client-bedrock";

const client = new BedrockClient({ region: "us-west-2" });

const command = new ListFoundationModelsCommand({ byProvider: "anthropic" });
const response = await client.send(command);

if (response.modelSummaries) {
  for (const summary of response.modelSummaries) {
    console.log(summary.modelId);
  }
}
using Amazon;
using Amazon.Bedrock;
using Amazon.Bedrock.Model;

var client = new AmazonBedrockClient(RegionEndpoint.USWest2);

var request = new ListFoundationModelsRequest
{
    ByProvider = "anthropic"
};

var response = await client.ListFoundationModelsAsync(request);

foreach (var summary in response.ModelSummaries)
{
    Console.WriteLine(summary.ModelId);
}
import (
	"context"
	"fmt"
	"log"

	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/service/bedrock"
)
// ...
	cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-west-2"))
	if err != nil {
		log.Fatal(err)
	}

	client := bedrock.NewFromConfig(cfg)

	byProvider := "anthropic"
	response, err := client.ListFoundationModels(context.TODO(), &bedrock.ListFoundationModelsInput{
		ByProvider: &byProvider,
	})
	if err != nil {
		log.Fatal(err)
	}

	for _, summary := range response.ModelSummaries {
		fmt.Println(*summary.ModelId)
	}
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.bedrock.BedrockClient;
import software.amazon.awssdk.services.bedrock.model.ListFoundationModelsRequest;
import software.amazon.awssdk.services.bedrock.model.ListFoundationModelsResponse;
import software.amazon.awssdk.services.bedrock.model.FoundationModelSummary;

public class ListAnthropicModels {
    public static void main(String[] args) {
        BedrockClient client = BedrockClient.builder()
            .region(Region.US_WEST_2)
            .build();

        ListFoundationModelsRequest request = ListFoundationModelsRequest.builder()
            .byProvider("anthropic")
            .build();

        ListFoundationModelsResponse response = client.listFoundationModels(request);

        for (FoundationModelSummary summary : response.modelSummaries()) {
            System.out.println(summary.modelId());
        }

        client.close();
    }
}
<?php

use Aws\Bedrock\BedrockClient;

$client = new BedrockClient([
    'region' => 'us-west-2',
    'version' => 'latest'
]);

$result = $client->listFoundationModels([
    'byProvider' => 'anthropic'
]);

foreach ($result['modelSummaries'] as $summary) {
    echo $summary['modelId'] . PHP_EOL;
}
require "aws-sdk-bedrock"

client = Aws::Bedrock::Client.new(region: "us-west-2")

response = client.list_foundation_models({
  by_provider: "anthropic"
})

response.model_summaries.each do |summary|
  puts summary.model_id
end

요청 만들기

다음 예시는 Bedrock에서 Claude로 텍스트를 생성하는 방법을 보여줘요:

AWS 자격 증명으로 `InvokeModel` API를 호출하려면 SigV4 요청 서명이 필요한데, 다른 탭의 SDK가 자동으로 처리해요. 셀프 포함 cURL 명령으로 호출할 수 있는 Bedrock 엔드포인트는 [Amazon Bedrock의 Claude](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock#making-your-first-request)를 참고하세요. `ant` CLI는 Amazon Bedrock을 지원하지 않아요. 대신 SDK 예시 중 하나를 사용하세요. ```python from anthropic import AnthropicBedrock
client = AnthropicBedrock(
    # Authenticate by either providing the keys below or use the default AWS credential providers, such as
    # using ~/.aws/credentials or the "AWS_SECRET_ACCESS_KEY" and "AWS_ACCESS_KEY_ID" environment variables.
    aws_access_key="<access key>",
    aws_secret_key="<secret key>",
    # Temporary credentials can be used with aws_session_token.
    # Read more at https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html.
    aws_session_token="<session_token>",
    # aws_region changes the aws region to which the request is made. If it is not provided, the SDK reads
    # AWS_REGION / AWS_DEFAULT_REGION, then the region configured for your boto3 session or AWS profile
    # (including ~/.aws/config), and raises ValueError if no region can be resolved.
    aws_region="us-west-2",
)

message = client.messages.create(
    model="global.anthropic.claude-opus-4-6-v1",
    max_tokens=256,
    messages=[{"role": "user", "content": "Hello, world"}],
)
print(message.content)
```
```typescript import AnthropicBedrock from "@anthropic-ai/bedrock-sdk";
const client = new AnthropicBedrock({
  // Authenticate by either providing the keys below or use
  // the default AWS credential providers, such as
  // ~/.aws/credentials or the "AWS_SECRET_ACCESS_KEY" and
  // "AWS_ACCESS_KEY_ID" environment variables.
  awsAccessKey: "<access key>",
  awsSecretKey: "<secret key>",

  // Temporary credentials can be used with awsSessionToken.
  // Read more at https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html.
  awsSessionToken: "<session_token>",

  // awsRegion changes the aws region to which the request
  // is made. By default, the SDK reads AWS_REGION, and if
  // that's not present, defaults to us-east-1. Note that
  // the SDK does not read ~/.aws/config for the region.
  awsRegion: "us-west-2"
});

const message = await client.messages.create({
  model: "global.anthropic.claude-opus-4-6-v1",
  max_tokens: 256,
  messages: [{ role: "user", content: "Hello, world" }]
});
console.log(message);
```
```csharp using Anthropic.Bedrock; using Anthropic.Models.Messages;
AnthropicBedrockClient client = new(
    await AnthropicBedrockCredentialsHelper.FromEnv()
    ?? throw new InvalidOperationException("AWS credentials not configured.")
);

var response = await client.Messages.Create(new MessageCreateParams
{
    Model = "global.anthropic.claude-opus-4-6-v1",
    MaxTokens = 256,
    Messages = [new() { Role = Role.User, Content = "Hello, world" }],
});

Console.WriteLine(
    string.Join("", response.Content
        .Select(block => block.Value)
        .OfType<TextBlock>()
        .Select(textBlock => textBlock.Text)));
```
```go import ( "context" "fmt"
	"github.com/anthropics/anthropic-sdk-go"
	"github.com/anthropics/anthropic-sdk-go/bedrock"
)
// ...
	// Uses default AWS credential provider chain
	client := anthropic.NewClient(
		bedrock.WithLoadDefaultConfig(context.Background()),
	)

	message, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
		Model:     "global.anthropic.claude-opus-4-6-v1",
		MaxTokens: 256,
		Messages: []anthropic.MessageParam{
			anthropic.NewUserMessage(anthropic.NewTextBlock("Hello, world")),
		},
	})
	if err != nil {
		panic(err)
	}
	fmt.Println(message.Content)
```
```java import com.anthropic.bedrock.backends.BedrockBackend; import com.anthropic.client.AnthropicClient; import com.anthropic.client.okhttp.AnthropicOkHttpClient; import com.anthropic.models.messages.Message; import com.anthropic.models.messages.MessageCreateParams;
public class BedrockExample {

  public static void main(String[] args) {
    // Uses default AWS credential provider chain
    AnthropicClient client = AnthropicOkHttpClient.builder()
      .backend(BedrockBackend.fromEnv())
      .build();

    Message message = client
      .messages()
      .create(
        MessageCreateParams.builder()
          .model("global.anthropic.claude-opus-4-6-v1")
          .maxTokens(256)
          .addUserMessage("Hello, world")
          .build()
      );

    System.out.println(message.content());
  }
}
```
```php use Anthropic\Bedrock; $client = Bedrock\Client::withCredentials( accessKeyId: getenv("AWS_ACCESS_KEY_ID"), secretAccessKey: getenv("AWS_SECRET_ACCESS_KEY"), region: 'us-west-2', securityToken: getenv("AWS_SESSION_TOKEN"), ); $message = $client->messages->create( maxTokens: 256, messages: [ ['role' => 'user', 'content' => 'Hello, world'] ], model: 'global.anthropic.claude-opus-4-6-v1', ); echo $message->content[0]->text; ``` ```ruby require "anthropic"
client = Anthropic::BedrockClient.new

message = client.messages.create(
  model: "global.anthropic.claude-opus-4-6-v1",
  max_tokens: 256,
  messages: [{role: "user", content: "Hello, world"}]
)

puts message.content.first.text
```
```python import boto3 import json
bedrock = boto3.client(service_name="bedrock-runtime")
body = json.dumps(
    {
        "max_tokens": 256,
        "messages": [{"role": "user", "content": "Hello, world"}],
        "anthropic_version": "bedrock-2023-05-31",
    }
)

response = bedrock.invoke_model(
    body=body, modelId="global.anthropic.claude-opus-4-6-v1"
)

response_body = json.loads(response.get("body").read())
print(response_body.get("content"))
```

자세한 내용은 클라이언트 SDK공식 Bedrock 문서를 참고하세요.

Bearer 토큰 인증

AWS 자격 증명 대신 bearer 토큰으로 Bedrock에 인증할 수 있어요. 팀이 AWS 자격 증명, IAM 역할, 계정 수준 권한을 관리하지 않고 Bedrock에 접근해야 하는 기업 환경에서 유용해요.

가장 간단한 접근은 AWS_BEARER_TOKEN_BEDROCK 환경 변수를 설정하는 것이고, 각 SDK가 환경에서 자격 증명을 해결할 때 자동으로 감지해요.

토큰을 프로그래매틱하게 제공하려면:

이 섹션은 SDK 클라이언트에서 bearer 토큰을 구성하는 방법을 보여줘요. SDK는 `AWS_BEARER_TOKEN_BEDROCK` 환경 변수에서도 토큰을 읽어요. bearer 토큰으로 직접 HTTP 요청을 하려면 [Amazon Bedrock 문서](https://docs.aws.amazon.com/bedrock/)를 참고하세요. `ant` CLI는 Amazon Bedrock을 지원하지 않아요. 대신 SDK 예시 중 하나를 사용하세요. ```python from anthropic import AnthropicBedrock
client = AnthropicBedrock(
    api_key="your-bearer-token",
    aws_region="us-west-2",
)

message = client.messages.create(
    model="us.anthropic.claude-sonnet-4-5-20250929-v1:0",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}],
)
print(message.content)
```
```typescript import AnthropicBedrock from "@anthropic-ai/bedrock-sdk";
const client = new AnthropicBedrock({
  apiKey: "your-...en",
  awsRegion: "us-west-2"
});

const message = await client.messages.create({
  model: "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello!" }]
});
console.log(message);
```
```csharp using Anthropic.Bedrock; using Anthropic.Models.Messages;
var client = new AnthropicBedrockClient(
    new AnthropicBedrockApiTokenCredentials
    {
        BearerToken = "your-bearer-token",
        Region = "us-west-2",
    }
);

var response = await client.Messages.Create(new MessageCreateParams
{
    Model = "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
    MaxTokens = 1024,
    Messages = [new() { Role = Role.User, Content = "Hello!" }],
});
```
```go import ( "context" "fmt"
	"github.com/anthropics/anthropic-sdk-go"
	"github.com/anthropics/anthropic-sdk-go/bedrock"
	"github.com/aws/aws-sdk-go-v2/aws"
)
// ...
	cfg := aws.Config{
		Region:                  "us-west-2",
		BearerAuthTokenProvider: bedrock.NewStaticBearerTokenProvider("your-bearer-token"),
	}
	client := anthropic.NewClient(
		bedrock.WithConfig(cfg),
	)

	message, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{
		Model:     "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
		MaxTokens: 1024,
		Messages: []anthropic.MessageParam{
			anthropic.NewUserMessage(anthropic.NewTextBlock("Hello!")),
		},
	})
	if err != nil {
		panic(err)
	}
	fmt.Println(message.Content[0].Text)
```
```java import com.anthropic.bedrock.backends.BedrockBackend; import com.anthropic.client.AnthropicClient; import com.anthropic.client.okhttp.AnthropicOkHttpClient; import com.anthropic.models.messages.MessageCreateParams;
// Option 1: Set AWS_BEARER_TOKEN_BEDROCK environment variable and use fromEnv()
AnthropicClient client = AnthropicOkHttpClient.builder()
  .backend(BedrockBackend.fromEnv())
  .build();

// Option 2: Provide the token programmatically
client = AnthropicOkHttpClient.builder()
  .backend(BedrockBackend.builder()
    .apiKey("your-bearer-token")
    .build())
  .build();

MessageCreateParams params = MessageCreateParams.builder()
  .model("us.anthropic.claude-sonnet-4-5-20250929-v1:0")
  .maxTokens(1024)
  .addUserMessage("Hello!")
  .build();

client.messages().create(params).content().stream()
  .flatMap(block -> block.text().stream())
  .forEach(textBlock -> System.out.println(textBlock.text()));
```
```php use Anthropic\Bedrock; $client = Bedrock\Client::withApiKey('your-bearer-token', 'us-west-2'); $message = $client->messages->create( maxTokens: 1024, messages: [ ['role' => 'user', 'content' => 'Hello!'] ], model: 'us.anthropic.claude-sonnet-4-5-20250929-v1:0', ); echo $message->content[0]->text; ``` ```ruby require "anthropic"
client = Anthropic::BedrockClient.new(
  api_key: "your-bearer-token",
  aws_region: "us-west-2"
)

message = client.messages.create(
  model: "us.anthropic.claude-sonnet-4-5-20250929-v1:0",
  max_tokens: 1024,
  messages: [{role: "user", content: "Hello!"}]
)
puts message.content.first.text
```

활동 로깅 (Activity logging)

Bedrock은 사용량과 관련된 프롬프트와 완료를 로깅할 수 있는 호출 로깅 서비스를 제공해요.

Anthropic은 활동을 이해하고 잠재적 오용을 조사하기 위해 활동을 최소 30일 단위로 로깅할 것을 권장해요.

참고: 이 서비스를 켜도 AWS나 Anthropic이 당신의 콘텐츠에 접근할 수 없어요.

기능 지원 (Feature support)

Amazon Bedrock 가용성이 있는 전체 기능 목록은 기능 개요를 참고하세요.

지원되는 기능 하이라이트

지원되지 않는 기능

  • 입력 소스(이미지·문서용 URL 소스, Files API)
  • 서버 측 도구(code execution, web search, web fetch, advisor)
  • 에이전트 인프라(Agent Skills, MCP 커넥터, 프로그래매틱 도구 호출)
  • API 엔드포인트(Message Batches, Models, Admin, Compliance, Usage and Cost)
  • Claude Managed Agents
  • 서버 측 폴백(fallbacks 매개변수. 대신 클라이언트 측 폴백 패턴 사용)
  • 자동 프롬프트 캐싱(최상위 cache_control 필드. 대신 명시적 캐시 중단점 사용)
  • 컴퓨터 사용browser use 도구셋(computer_toolset_20260801browser_toolset_20260801은 현재 Amazon Bedrock에서 사용할 수 없음. 베타 컴퓨터 사용 도구 버전은 계속 사용 가능)

Bedrock에서의 PDF 지원

PDF 지원은 Converse API와 InvokeModel API 둘 다를 통해 Bedrock에서 사용할 수 있어요. PDF 처리 능력과 한계에 대한 상세 정보는 Amazon Bedrock PDF 지원을 참고하세요.

Converse API 사용자를 위한 중요한 고려 사항:

  • 시각적 PDF 분석(차트, 이미지, 레이아웃)은 인용이 활성화되어 있어야 해요
  • 인용 없이는 기본 텍스트 추출만 가능해요
  • 강제 인용 없이 완전한 제어를 원하면 InvokeModel API를 사용하세요

Bedrock에서의 대화 중간 시스템 메시지

대화 중간 시스템 메시지는 Claude Fable 5.1, Claude Fable 5, Claude Opus 5.5, Claude Opus 5, Claude Opus 4.8의 InvokeModel API에서 사용할 수 있어요. API 모델 ID 아래 참고에 설명된 대로, 이 요청들은 Amazon Bedrock의 Claude 엔드포인트와 같은 인프라에서 서비스돼요. 베타 헤더가 필요 없어요. 이 기능은 Claude Sonnet 5에서는 사용할 수 없어요. 대신 최상위 system 필드를 사용하세요. 이 페이지의 모델 표에 있는 ARN 버전 모델에서는 사용할 수 없어요.

Converse API 사용자의 경우: Converse API는 최상위 system 매개변수를 통해 시스템 지침을 수용해요. 대화 중간에 시스템 지침을 추가하려면 InvokeModel API를 사용하세요.

컨텍스트 창 (Context window)

Claude Fable 5.1, Claude Fable 5, Claude Opus 5.5, Claude Opus 5, Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 5, Claude Sonnet 4.6은 Amazon Bedrock에서 1M 토큰 컨텍스트 창을 가져요. Sonnet 4.5와 Sonnet 4(deprecated)를 포함한 다른 Claude 모델은 200k 토큰 컨텍스트 창을 가져요.

Bedrock은 요청 페이로드를 20MB로 제한해요. 큰 문서나 많은 이미지를 보낼 때는 토큰 한도 전에 이 한도에 도달할 수 있어요.

글로벌 대비 지역 엔드포인트

Claude Sonnet 4.5와 이후 모든 모델부터 Bedrock은 두 가지 엔드포인트 유형을 제공해요:

  • 글로벌 엔드포인트 (Global endpoints): 최대 가용성을 위한 동적 라우팅
  • 지역 엔드포인트 (Regional endpoints): 특정 지리적 지역을 통한 보장된 데이터 라우팅

지역 엔드포인트는 글로벌 엔드포인트보다 10% 가격 프리미엄을 지녀요.

참고: 이는 Claude Sonnet 4.5와 이후 모델에만 적용돼요. 오래된 모델(Claude Sonnet 4(deprecated) 등 이전)은 기존 가격 구조를 유지해요.

각 옵션을 언제 사용할지

글로벌 엔드포인트 (권장):

  • 최대 가용성과 업타임 제공
  • 용량이 있는 지역으로 요청을 동적으로 라우팅
  • 가격 프리미엄 없음
  • 데이터 레지던시가 유연한 애플리케이션에 최적

지역 엔드포인트 (CRIS):

  • 특정 지리적 지역을 통해 트래픽 라우팅
  • 데이터 레지던시와 컴플라이언스 요구에 필요
  • 미국, EU, 일본, 아시아 태평양에서 사용 가능
  • 10% 가격 프리미엄은 전용 지역 용량의 인프라 비용을 반영

구현

글로벌 엔드포인트 사용 (Opus 4.6, Sonnet 4.6, Sonnet 4.5의 기본값):

Claude Opus 4.6, Sonnet 4.6, Sonnet 4.5의 모델 ID는 이미 global. 접두사를 포함해요:

AWS 자격 증명으로 `InvokeModel` API를 호출하려면 SigV4 요청 서명이 필요한데, 다른 탭의 SDK가 자동으로 처리해요. 셀프 포함 cURL 명령으로 호출할 수 있는 Bedrock 엔드포인트는 [Amazon Bedrock의 Claude](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock#making-your-first-request)를 참고하세요. `ant` CLI는 Amazon Bedrock을 지원하지 않아요. 대신 SDK 예시 중 하나를 사용하세요. ```python from anthropic import AnthropicBedrock
client = AnthropicBedrock(aws_region="us-west-2")

message = client.messages.create(
    model="global.anthropic.claude-opus-4-6-v1",
    max_tokens=256,
    messages=[{"role": "user", "content": "Hello, world"}],
)
```
```typescript import AnthropicBedrock from "@anthropic-ai/bedrock-sdk";
const client = new AnthropicBedrock({
  awsRegion: "us-west-2"
});

const message = await client.messages.create({
  model: "global.anthropic.claude-opus-4-6-v1",
  max_tokens: 256,
  messages: [{ role: "user", content: "Hello, world" }]
});
```
```csharp using Anthropic.Bedrock; using Anthropic.Models.Messages;
// C# Bedrock client uses model IDs with region prefix for global routing
AnthropicBedrockClient client = new(
    await AnthropicBedrockCredentialsHelper.FromEnv()
    ?? throw new InvalidOperationException("AWS credentials not configured.")
);

var response = await client.Messages.Create(new MessageCreateParams
{
    // Use "global." prefix for global cross-region inference
    Model = "global.anthropic.claude-opus-4-6-v1",
    MaxTokens = 256,
    Messages = [new() { Role = Role.User, Content = "Hello, world" }],
});
```
```go import ( "context"
	"github.com/anthropics/anthropic-sdk-go"
	"github.com/anthropics/anthropic-sdk-go/bedrock"
)
// ...
	// Uses default AWS credential provider chain
	client := anthropic.NewClient(
		bedrock.WithLoadDefaultConfig(context.Background()),
	)

	message, _ := client.Messages.New(context.Background(), anthropic.MessageNewParams{
		Model:     "global.anthropic.claude-opus-4-6-v1",
		MaxTokens: 256,
		Messages: []anthropic.MessageParam{
			anthropic.NewUserMessage(anthropic.NewTextBlock("Hello, world")),
		},
	})
```
```java import com.anthropic.bedrock.backends.BedrockBackend; import com.anthropic.client.AnthropicClient; import com.anthropic.client.okhttp.AnthropicOkHttpClient; import com.anthropic.models.messages.MessageCreateParams;
// Uses default AWS credential provider chain
AnthropicClient client = AnthropicOkHttpClient.builder()
  .backend(BedrockBackend.fromEnv())
  .build();

var message = client
  .messages()
  .create(
    MessageCreateParams.builder()
      .model("global.anthropic.claude-opus-4-6-v1")
      .maxTokens(256)
      .addUserMessage("Hello, world")
      .build()
  );
```
```php use Anthropic\Bedrock; $client = Bedrock\Client::fromEnvironment(); $message = $client->messages->create( maxTokens: 256, messages: [ ['role' => 'user', 'content' => 'Hello, world'] ], model: 'global.anthropic.claude-opus-4-6-v1', ); ``` ```ruby require "anthropic"
# Default credentials resolve region from AWS_REGION env var
client = Anthropic::BedrockClient.new

message = client.messages.create(
  # Use "global." prefix for global cross-region inference
  model: "global.anthropic.claude-opus-4-6-v1",
  max_tokens: 256,
  messages: [{role: "user", content: "Hello, world"}]
)
```

지역 엔드포인트 (CRIS) 사용:

지역 엔드포인트를 사용하려면 global. 접두사를 us. 같은 지역 접두사로 바꾸세요:

AWS 자격 증명으로 `InvokeModel` API를 호출하려면 SigV4 요청 서명이 필요한데, 다른 탭의 SDK가 자동으로 처리해요. 셀프 포함 cURL 명령으로 호출할 수 있는 Bedrock 엔드포인트는 [Amazon Bedrock의 Claude](https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock#making-your-first-request)를 참고하세요. `ant` CLI는 Amazon Bedrock을 지원하지 않아요. 대신 SDK 예시 중 하나를 사용하세요. ```python from anthropic import AnthropicBedrock
client = AnthropicBedrock(aws_region="us-west-2")

# Using US regional endpoint (CRIS)
message = client.messages.create(
    model="us.anthropic.claude-opus-4-6-v1",  # Regional prefix
    max_tokens=256,
    messages=[{"role": "user", "content": "Hello, world"}],
)
```
```typescript import AnthropicBedrock from "@anthropic-ai/bedrock-sdk";
const client = new AnthropicBedrock({
  awsRegion: "us-west-2"
});

// Using US regional endpoint (CRIS)
const message = await client.messages.create({
  model: "us.anthropic.claude-opus-4-6-v1", // Regional prefix
  max_tokens: 256,
  messages: [{ role: "user", content: "Hello, world" }]
});
```
```csharp using Anthropic.Bedrock; using Anthropic.Models.Messages;
AnthropicBedrockClient client = new(
    new AnthropicBedrockPrivateKeyCredentials { Region = "us-west-2" }
);

// Using US regional endpoint (CRIS)
var response = await client.Messages.Create(new MessageCreateParams
{
    Model = "us.anthropic.claude-opus-4-6-v1", // Regional prefix
    MaxTokens = 256,
    Messages = [new() { Role = Role.User, Content = "Hello, world" }],
});
```
```go import ( "context"
	"github.com/anthropics/anthropic-sdk-go"
	"github.com/anthropics/anthropic-sdk-go/bedrock"
)
// ...
	// Uses default AWS credential provider chain
	client := anthropic.NewClient(
		bedrock.WithLoadDefaultConfig(context.Background()),
	)

	// Using US regional endpoint (CRIS)
	message, _ := client.Messages.New(context.Background(), anthropic.MessageNewParams{
		Model:     "us.anthropic.claude-opus-4-6-v1", // Regional prefix
		MaxTokens: 256,
		Messages: []anthropic.MessageParam{
			anthropic.NewUserMessage(anthropic.NewTextBlock("Hello, world")),
		},
	})
```
```java import com.anthropic.bedrock.backends.BedrockBackend; import com.anthropic.client.AnthropicClient; import com.anthropic.client.okhttp.AnthropicOkHttpClient; import com.anthropic.models.messages.MessageCreateParams;
// Uses default AWS credential provider chain
AnthropicClient client = AnthropicOkHttpClient.builder()
  .backend(BedrockBackend.fromEnv())
  .build();

// Using US regional endpoint (CRIS)
var message = client
  .messages()
  .create(
    MessageCreateParams.builder()
      .model("us.anthropic.claude-opus-4-6-v1") // Regional prefix
      .maxTokens(256)
      .addUserMessage("Hello, world")
      .build()
  );
```
```php use Anthropic\Bedrock; $client = Bedrock\Client::fromEnvironment(); $message = $client->messages->create( maxTokens: 256, messages: [ ['role' => 'user', 'content' => 'Hello, world'] ], model: 'us.anthropic.claude-opus-4-6-v1', ); ``` ```ruby require "anthropic"
# Using US regional endpoint (CRIS)
client = Anthropic::BedrockClient.new(aws_region: "us-west-2")

message = client.messages.create(
  model: "us.anthropic.claude-opus-4-6-v1", # Regional prefix
  max_tokens: 256,
  messages: [{role: "user", content: "Hello, world"}]
)
```

참고: Claude Mythos Preview는 Amazon Bedrock에서 초대받은 고객에게 제공되는 연구 미리보기 모델이에요. 자세한 내용은 Project Glasswing을 참고하세요.

추가 자료 (Additional resources)

더 알아보기 (Learn more)