# Claude Platform on AWS

通过 AWS 访问 Claude 的完整平台功能，由 Anthropic 托管基础设施提供支持。

---

Claude Platform on AWS 为您提供完整的 Anthropic 平台体验，包括 Messages API、Agent Skills、代码执行和测试版功能，可通过您的 AWS 账户访问。与 [Amazon Bedrock](/docs/en/build-with-claude/claude-in-amazon-bedrock)（由 AWS 运营推理堆栈）不同，Claude Platform on AWS 由 Anthropic 运营。AWS 提供认证层（SigV4 或 API 密钥）、基于 IAM 的访问控制，以及通过 AWS Marketplace 的计费集成。

<Note>
Anthropic SDK 支持 Claude Platform on AWS。有关各语言客户端的可用性，请参阅[客户端 SDK](/docs/en/api/client-sdks)。
</Note>

## 平台集成的工作原理

Claude 模型运行在 Anthropic 托管的基础设施上。这是一个通过 AWS 进行计费和访问的商业集成。Anthropic 是推理输入和输出的数据处理者；AWS 在市场模型下处理计费和身份元数据。通过 Claude Platform on AWS 使用 Claude 的客户受 Anthropic [数据使用条款](https://www.anthropic.com/legal)的约束。Anthropic 继续提供其行业领先的安全和数据承诺。

请注意以下运营特征：数据可能不在 AWS 中驻留；推理可能路由到 Anthropic 的主要云；子服务可能在底层移动而无需通知。设置 [`inference_geo`](#数据驻留) 参数可将推理固定到特定地理位置。

Claude Platform on AWS 遵循与第一方 Claude API 相同的数据保留政策。零数据保留 (ZDR) 可应请求提供。请联系您的 Anthropic 客户代表为您的组织启用。

## Claude Platform on AWS 与 Amazon Bedrock 的比较

两种产品都让您通过 AWS 使用 Claude，但它们在架构、API 接口和功能可用性方面有显著差异。

| 方面 | Claude Platform on AWS | [Claude in Amazon Bedrock](/docs/en/build-with-claude/claude-in-amazon-bedrock) | [Amazon Bedrock（旧版）](/docs/en/build-with-claude/claude-on-amazon-bedrock-legacy) |
| :--- | :--- | :--- | :--- |
| **谁运营堆栈** | Anthropic | AWS | AWS |
| **API 接口** | Claude API (`/v1/{endpoint}`) | Messages API at `/anthropic/v1/messages` | Bedrock Converse / InvokeModel |
| **功能可用性** | 通常与 Claude API 同天发布（参见[功能限制](#不支持的功能)） | 按 Amazon Bedrock 发布计划 | 按 Amazon Bedrock 发布计划 |
| **Agent Skills** | 可用（测试版） | 不可用（需要代码执行） | 不可用 |
| **测试版功能** | 通过 `anthropic-beta` 头传递（参见[功能限制](#不支持的功能)） | 不支持 `anthropic-beta` 头 | 不支持 `anthropic-beta` 头 |
| **认证** | AWS IAM / SigV4 或 API 密钥 | AWS IAM / SigV4 | AWS IAM / SigV4 或 bearer token（仅 C#、Go 和 Java SDK） |
| **计费** | AWS Marketplace | AWS（原生服务） | AWS（原生服务） |
| **基础 URL** | `aws-external-anthropic.{region}.api.aws` | `bedrock-mantle.{region}.api.aws` | `bedrock-runtime.{region}.amazonaws.com` |
| **SDK 客户端** | 平台特定客户端类（例如 Python 中的 `AnthropicAWS`），测试版 | `AnthropicBedrockMantle` | `AnthropicBedrock` / Bedrock SDK |
| **控制台** | Claude 控制台（`platform.claude.com`，通过 AWS 控制台访问） | Bedrock 控制台 | Bedrock 控制台 |
| **速率限制和配额** | 由 Anthropic 管理 | 由 AWS 管理 | 由 AWS 管理 |
| **推理数据处理者** | Anthropic | AWS | AWS |

如果您需要 AWS 运营的 Claude，请参阅 [Claude in Amazon Bedrock](/docs/en/build-with-claude/claude-in-amazon-bedrock)。Claude Platform on AWS 使用与第一方 Claude API 和 Amazon Bedrock 分开的容量池。您可以在多个平台上运行工作负载并在它们之间进行故障转移。

支持 [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html) 将您的 VPC 连接到 Claude Platform on AWS 端点。

**何时选择 Bedrock：** 受监管行业的组织如果需要 FedRAMP High、IL4、IL5 或 HIPAA 就绪的合规性，或者需要 AWS 作为唯一数据处理者，应使用 [Claude in Amazon Bedrock](/docs/en/build-with-claude/claude-in-amazon-bedrock)。Bedrock 完全在 AWS 控制的基础设施上运行，AWS 作为运营方。

## 设置您的账户

设置 Claude Platform on AWS 分四个阶段：在 AWS 控制台服务页面注册、完成 Anthropic 组织设置、记录您的工作区 ID，以及登录 Claude 控制台。

<Note>
通过 AWS 控制台注册会配置一个绑定到您 AWS 账户的新 Anthropic 组织。此组织与您公司与 Anthropic 的任何现有组织分开，包括通过 AWS Marketplace 采购的 Claude Enterprise 组织。来自第一方 Anthropic 组织的 API 密钥、工作区和 Claude 控制台设置不会转移。

如果您有现有的 Amazon Bedrock 私有报价，请在注册前联系您的 Anthropic 或 AWS 客户代表，以便您的折扣从第一个请求开始生效。折扣不能追溯应用于私有报价被接受之前产生的使用量。参见[私有报价](/docs/en/about-claude/pricing#private-offers)。
</Note>

<Steps>
<Step title="在 AWS 控制台注册">
1. 打开 [AWS 控制台](https://console.aws.amazon.com/)并导航到 **Claude Platform on AWS** 服务页面。
2. 选择 **Sign up**。
3. 在注册页面上，查看条款（Anthropic 的最终用户许可协议、AWS 隐私通知和 AWS 客户协议）并选择协议复选框。
4. 选择 **Continue**。

页面显示 **Sign-up in progress** 横幅。请留在页面上。注册需要几分钟时间，AWS 为您处理 AWS Marketplace 订阅，然后自动重定向您。

如果您的组织有来自 Anthropic 的私有报价，控制台会查找它并提示您在 AWS Marketplace 中接受。有关详细信息，请参阅[私有报价](/docs/en/about-claude/pricing#private-offers)。

<Note>
如果您使用 Claude Platform on AWS，您的内容（如提示和补全）由 Anthropic 在 AWS 之外处理。有关内容和元数据如何处理和存储的详细信息，请参阅 Anthropic 的[数据使用政策](https://www.anthropic.com/legal)。
</Note>
</Step>

<Step title="设置您的 Anthropic 组织">
注册完成后，您将被重定向到 `platform.claude.com/partner-signup`。

1. 输入组织所有者的电子邮件地址并选择 **Get started**。
2. 检查该电子邮件收件箱中的设置链接并按照链接操作。如果您的浏览器显示 **Signed in as a different account** 页面，请选择 **Log out and continue**。
3. 完成组织详细信息表单（组织名称、实体类型、国家/地区、预期用途）并选择 **Complete setup**。

完成设置会创建您的 Anthropic 组织并接受 Anthropic 的商业服务条款和使用政策。AWS 控制台服务页面现在显示左侧导航，包含 **Home**、**API keys**、**Quickstart** 和 **Workspaces**。
</Step>

<Step title="创建您的工作区并记录其 ID">
完成设置后，AWS 控制台会提示您创建工作区。有关区域绑定、IAM 资源范围和创建额外工作区的详细信息，请参阅[工作区](#工作区)。

在 AWS 控制台 **Claude Platform on AWS** 服务页面的 **Workspaces** 下或在 [Claude 控制台](#使用-claude-控制台)中找到工作区 ID。工作区 ID 使用 `wrkspc_` 格式，后跟字母数字标识符。
</Step>

<Step title="登录 Claude 控制台">
对 Claude 控制台的访问通过 AWS IAM 联合：

1. 假设具有 `aws-external-anthropic:AssumeConsole` 权限的 IAM 角色。参见 [Claude Platform on AWS 的 IAM 操作](/docs/en/api/claude-platform-on-aws-iam-actions#console-access)。
2. 从 **Claude Platform on AWS** 服务页面，选择 **Open Claude Console**。AWS 控制台颁发 JWT 并将您重定向到 `platform.claude.com`。
3. 首次登录时，系统会提示您输入电子邮件地址。输入您的工作电子邮件。平台即时配置您的 Claude 控制台用户。

当您通过 AWS 控制台登录时，Claude 控制台会限定到您的 Claude Platform on AWS 组织。Claude 控制台侧边栏左下角会出现 **Account managed by AWS** 指示器。
</Step>
</Steps>

### 账户设置故障排除

- **"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 调用后使用页面不显示数据：** 使用数据可能需要几分钟才能出现在 Claude 控制台中。

## 发起 API 调用之前

确保您已：

1. 活跃的 AWS 账户，已订阅 Claude Platform on AWS（参见[设置您的账户](#设置您的账户)）
2. 已安装并配置 [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)
3. 在您的 AWS 账户上**启用出站 Web 身份联合**（一次性设置步骤；参见[启用出站 Web 身份联合](#启用出站-web-身份联合)）
4. 您的工作区 ID（参见[获取您的工作区 ID](#获取您的工作区-id)）

### 启用出站 Web 身份联合

Claude Platform on AWS 网关在服务端调用 `sts:GetWebIdentityToken` 以生成转发给 Anthropic 的 JWT。此 STS 功能在每个 AWS 账户上**默认禁用**。每个账户启用一次：

```bash CLI
aws iam enable-outbound-web-identity-federation
```

如果响应是 `[ERROR] (FeatureEnabled) ... already enabled`，则该设置已为您的账户启用，您可以继续。验证并获取您账户的颁发者 URL：

```bash CLI
aws iam get-outbound-web-identity-federation-info
```

<Warning>
没有此步骤，每个请求都会返回 `"Outbound web identity federation is disabled for your account"`。这是最常见的设置错误。
</Warning>

### 获取您的工作区 ID

完成账户设置后，您从 AWS 控制台创建工作区（参见[设置您的账户](#设置-your-账户)）。工作区绑定到单个 AWS 区域。您可以在 [Claude 控制台](#使用-claude-控制台)的 **Workspaces** 下或 AWS 控制台服务页面的 **Workspaces** 部分找到工作区 ID。

设置 `ANTHROPIC_AWS_WORKSPACE_ID` 和 `AWS_REGION` 环境变量，以便 SDK 客户端自动读取：

```bash CLI
export ANTHROPIC_AWS_WORKSPACE_ID='wrkspc_01AbCdEf23GhIj'
export AWS_REGION='us-west-2'  # 您工作区的 AWS 区域
```

区域是必需的。如果未设置区域，SDK 客户端会引发错误。将 `aws_region`/`awsRegion` 传递给构造函数，或设置 `AWS_REGION`（或 `AWS_DEFAULT_REGION`）。支持所有 AWS 商业区域。

## 认证

Claude Platform on AWS 支持两种认证方法：带有 SigV4 请求签名的 AWS IAM（主要）和 API 密钥认证。两者使用相同的基础 URL 和请求格式。

### SigV4 认证

SigV4 是企业原生路径，与您现有的 AWS IAM 策略、角色和审计集成。使用 [AWS 默认凭证提供者链](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)支持的任何方法配置 AWS 凭证：

- 环境变量（`AWS_ACCESS_KEY_ID`、`AWS_SECRET_ACCESS_KEY`、`AWS_SESSION_TOKEN`）
- 共享凭证文件（`~/.aws/credentials`）
- 共享配置文件（`~/.aws/config`），包括 SSO 和 `credential_process`
- Web 身份（`AWS_WEB_IDENTITY_TOKEN_FILE` 和 `AWS_ROLE_ARN`），用于 IRSA 和 GitHub Actions
- ECS 容器凭证
- EC2 实例元数据服务（IMDS）

验证您的凭证是否正常工作：

```bash CLI
aws sts get-caller-identity
```

### API 密钥认证

对于更简单的集成路径（本地开发和脚本），您可以使用 API 密钥而不是 SigV4 进行认证。设置 `ANTHROPIC_AWS_API_KEY` 环境变量或将 `apiKey` 传递给 SDK 构造函数。

在 **AWS 控制台**的 **Claude Platform on AWS -> API keys** 下生成 API 密钥。选择 **Generate a key**，然后复制密钥值。将 `aws-external-anthropic:CallWithBearerToken` IAM 操作授予应允许使用 API 密钥认证的主体。

<Note>
Claude Platform on AWS 的 API 密钥在 AWS 控制台中管理，而不是在 Claude 控制台中。在标准 [Claude 控制台](https://platform.claude.com/)中创建的密钥（用于第一方 API 访问）不能与 Claude Platform on AWS 端点一起使用。
</Note>

#### 短期 API 密钥

对于需要将凭证交给单独进程（如 LLM 网关、无服务器函数或支持 bearer-token 认证但不支持 SigV4 的工具）的工作负载，请从您的 AWS 凭证生成短期 API 密钥，而不是在 AWS 控制台中配置长期密钥。

AWS 发布了用于 [JavaScript](https://github.com/aws/token-generator-for-aws-external-anthropic-js)、[Python](https://github.com/aws/token-generator-for-aws-external-anthropic-python) 和 [Java](https://github.com/aws/token-generator-for-aws-external-anthropic-java) 的 token 生成器库。每个库通过标准提供者链读取您的 AWS 凭证，并返回可与 `x-api-key` 头一起使用的限时 token。Token 有效期默认为 12 小时，上限为您请求的时长、AWS 凭证的过期时间和 12 小时中的较小值。有关安装和完整配置选项，请参阅链接的仓库 README。

将生成的 token 传递给 SDK，方式与传递 AWS 控制台生成的 API 密钥相同：

<CodeGroup>

```python Python nocheck
from token_generator_for_aws_external_anthropic import TokenGenerator
from anthropic import AnthropicAWS

token = TokenGenerator(region="us-west-2").get_token()

client = AnthropicAWS(api_key=token, aws_region="us-west-2")
```

```typescript TypeScript nocheck
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" });
```

```java Java nocheck
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();
}
```
</CodeGroup>

如果您可以在本地生成 token，您的进程已经拥有 SigV4 凭证，SigV4 认证通常是更简单的选择。当发起 API 调用的进程与持有 AWS 凭证的进程分开时使用短期密钥。

SDK 不会自动刷新短期密钥。当 token 过期时，生成新的并构造新的客户端。使用 token 的主体仍然需要 `aws-external-anthropic:CallWithBearerToken` IAM 操作。

### 凭证优先级

平台特定客户端按以下顺序解析认证。参数名称因语言约定而异（TypeScript 和 PHP 使用如图所示的 camelCase；Python 和 Ruby 使用 snake_case；Go 使用大写首字母缩写的 PascalCase；C# 和 Java 使用语言的属性或构建器惯用语法）。

1. `apiKey` 构造函数参数 -> `x-api-key` 头
2. `awsAccessKey` + `awsSecretAccessKey` 构造函数参数 -> AWS SigV4
3. `awsProfile` 构造函数参数 -> 使用命名配置文件的 AWS SigV4
4. `ANTHROPIC_AWS_API_KEY` 环境变量 -> `x-api-key` 头
5. 默认 AWS 凭证提供者链 -> AWS SigV4

### 区域解析

如果未将 `aws_region`/`awsRegion` 传递给构造函数，客户端从环境读取 `AWS_REGION`，回退到 `AWS_DEFAULT_REGION` 以兼容标准 AWS SDK。区域是必需的；没有回退默认值。与回退到 `us-east-1` 的 `AnthropicBedrock` 不同，`AnthropicAWS`/`AnthropicAws` 客户端在构造函数参数和环境变量都未设置时会引发错误。

## 安装 SDK

Anthropic 的[客户端 SDK](/docs/en/api/client-sdks) 支持 Claude Platform on AWS。每个 SDK 提供一个平台特定的客户端类，处理 SigV4 签名、基于区域的基础 URL 构造和 `anthropic-workspace-id` 头。

<Tabs>
<Tab title="Python">
```bash
pip install -U "anthropic[aws]"
```

<Tip>
在使用 Homebrew Python 或其他外部管理的 Python 环境的 macOS 上，`pip install` 可能会因 PEP 668 `externally-managed-environment` 错误而失败。请先创建并激活虚拟环境：`python3 -m venv .venv && source .venv/bin/activate`。
</Tip>
</Tab>

<Tab title="TypeScript">
```bash
npm install @anthropic-ai/aws-sdk
```
</Tab>

<Tab title="C#">
```bash
dotnet add package Anthropic.Aws
```
</Tab>

<Tab title="Go">
```bash
go get github.com/anthropics/anthropic-sdk-go
```
</Tab>

<Tab title="Java">
```kotlin Gradle
implementation("com.anthropic:anthropic-java-aws:2.33.0")
```

```xml Maven
<dependency>
  <groupId>com.anthropic</groupId>
  <artifactId>anthropic-java-aws</artifactId>
  <version>2.33.0</version>
</dependency>
```
</Tab>

<Tab title="PHP">
```bash
composer require anthropic-ai/sdk aws/aws-sdk-php
```
</Tab>

<Tab title="Ruby">
```bash
gem install anthropic aws-sdk-core
```
</Tab>
</Tabs>

<Note>
Claude Platform on AWS 的 SDK 客户端处于测试版。
</Note>

## 可用模型

以下模型在 Claude Platform on AWS 上可用：

| 模型 | 模型 ID |
| :--- | :--- |
| Claude Opus 4.7 | `claude-opus-4-7` |
| Claude Opus 4.6 | `claude-opus-4-6` |
| Claude Sonnet 4.6 | `claude-sonnet-4-6` |
| Claude Opus 4.5 | `claude-opus-4-5` |
| Claude Sonnet 4.5 | `claude-sonnet-4-5` |
| Claude Haiku 4.5 | `claude-haiku-4-5` |

模型 ID 与第一方 Claude API 相同。没有 Bedrock 风格的 ARN 或 `anthropic.` 前缀。

新模型在 Claude Platform on AWS 上与第一方 Claude API 同时发布。

<Tip>
正在升级到更新的 Claude 模型？在 Claude Code 中，运行 `/claude-api migrate` 以在代码库中应用模型 ID 交换和重大参数更改。该技能检测您的代码目标云平台，并为该平台调整模型 ID 格式和功能更改。请参阅[迁移到更新的 Claude 模型](/docs/en/agents-and-tools/agent-skills/claude-api-skill#migrating-to-a-newer-claude-model)。
</Tip>

## 发起请求

Claude Platform on AWS 使用与第一方 Claude API 相同的 API 端点。区别在于基础 URL、认证方法和必需的 `anthropic-workspace-id` 头，该头标识请求目标的[工作区](#工作区)。

<CodeGroup>

```bash cURL nocheck
# 将 us-west-2 替换为您的 AWS 区域（URL 和 --aws-sigv4 中都需要）
curl "https://aws-external-anthropic.us-west-2.api.aws/v1/messages" \
  --aws-sigv4 "aws:amz:us-west-2:aws-external-anthropic" \
  --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
  -H "x-amz-security-token: $AWS_SESSION_TOKEN" \
  -H "content-type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-workspace-id: $ANTHROPIC_AWS_WORKSPACE_ID" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Hello!"}
    ]
  }'
```

```python Python nocheck
from anthropic import AnthropicAWS

client = AnthropicAWS()

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}],
)
print(message)
```

```typescript TypeScript nocheck
import AnthropicAws from "@anthropic-ai/aws-sdk";

const client = new AnthropicAws();

const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello!" }]
});
console.log(message);
```

```csharp C# nocheck
using Anthropic;
using Anthropic.Aws;

var client = new AnthropicAwsClient();

var message = await client.Messages.Create(new()
{
    Model = Model.ClaudeSonnet4_6,
    MaxTokens = 1024,
    Messages = [new() { Role = Role.User, Content = "Hello!" }]
});

Console.WriteLine(message);
```

```go Go nocheck hidelines={1..11,-1}
package main

import (
	"context"
	"fmt"

	"github.com/anthropics/anthropic-sdk-go"
	anthropicaws "github.com/anthropics/anthropic-sdk-go/aws"
)

func main() {
	client, err := anthropicaws.NewClient(context.Background(), anthropicaws.ClientConfig{})
	if err != nil {
		panic(err)
	}

	message, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
		Model:     anthropic.ModelClaudeSonnet4_6,
		MaxTokens: 1024,
		Messages: []anthropic.MessageParam{
			anthropic.NewUserMessage(anthropic.NewTextBlock("Hello!")),
		},
	})
	if err != nil {
		panic(err)
	}

	fmt.Println(message)
}
```

```java Java nocheck
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_4_6)
            .maxTokens(1024)
            .addUserMessage("Hello!")
            .build()
    );

    IO.println(message);
}
```

```php PHP nocheck hidelines={1}
<?php
use Anthropic\Aws\Client;

$client = new Client();

$message = $client->messages->create(
    model: 'claude-sonnet-4-6',
    maxTokens: 1024,
    messages: [['role' => 'user', 'content' => 'Hello!']],
);

echo $message;
```

```ruby Ruby nocheck
require "anthropic"

client = Anthropic::AWSClient.new

message = client.messages.create(
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello!" }]
)

puts message
```
</CodeGroup>

客户端从环境读取 `AWS_REGION`（或 `AWS_DEFAULT_REGION`）和 `ANTHROPIC_AWS_WORKSPACE_ID`。您可以通过将 `aws_region` / `awsRegion` 或 `workspace_id` / `workspaceId` 传递给构造函数来覆盖任一项。区域和工作区 ID 都是必需的。如果工作区 ID 无法解析，构造函数会引发错误；缺少区域同样会引发错误。

<Note>
`x-amz-security-token` 头（cURL）仅在使用临时凭证（如 IAM 角色、SSO 或 STS）时需要。使用长期 IAM 用户凭证时请省略。SDK 客户端根据凭证来源自动处理。
</Note>

`--aws-sigv4` 值遵循 `aws:amz:<region>:<service>` 格式。SigV4 服务名称是 `aws-external-anthropic`，区域必须与端点 URL 中的区域匹配。任一不匹配都会产生通用签名拒绝错误，而不是特定的诊断信息。

### 上下文窗口

Claude Platform on AWS 上的上下文窗口大小与第一方 Claude API 相同。有关每模型限制，请参阅[上下文窗口](/docs/en/build-with-claude/context-windows)。

## 功能支持

Claude Platform on AWS 直接使用 Claude API 端点，这意味着您获得与第一方 Claude API 的完全功能对等（[功能限制](#不支持的功能)中注明的除外）：

- **功能访问：** 由于 Anthropic 运营两个平台，大多数新功能和测试版头无需单独的集成步骤即可在 Claude Platform on AWS 上使用。有关例外情况，请参阅[功能限制](#不支持的功能)。
- **测试版功能：** 传递标准 `anthropic-beta` 头以访问测试版功能，就像使用 Claude API 一样。
- **Agent Skills：** 使用与 Claude API 相同的 `container.skills` 参数和测试版头来使用预构建和自定义 [Agent Skills](/docs/en/agents-and-tools/agent-skills/overview)。所有预构建 Skills（PowerPoint、Excel、Word、PDF）都可以开箱即用。
- **代码执行：** 使用[代码执行工具](/docs/en/agents-and-tools/tool-use/code-execution-tool)在 Anthropic 的托管沙箱中运行代码。
- **工具使用：** Computer use 和所有其他[工具使用功能](/docs/en/agents-and-tools/tool-use/overview)都可用。
- **扩展思考：** 使用与 Claude API 相同的参数启用扩展思考。
- **流式传输：** 完整的 SSE 流式传输支持，用于实时响应。
- **批量处理：** 提交批量请求用于高吞吐量工作负载。
- **Prompt caching：** 缓存工具、系统提示和消息历史以减少延迟和成本。所有 prompt caching 功能（5 分钟 TTL、1 小时 TTL 和自动缓存）都可用。
- **Files API：** 上传和跨请求引用文件。

有关与 Amazon Bedrock 的功能可用性差异，请参阅[比较表](#claude-platform-on-aws-与-amazon-bedrock-的比较)。

### Claude 托管代理

[Claude 托管代理](/docs/en/managed-agents/overview)在 Claude Platform on AWS 上可用，包括代理、环境、会话、凭证库和内存存储。

Claude Platform on AWS 上的会话行为与第一方 Claude 托管代理有一个区别：

- **自主会话重新认证：** 会话可以在没有任何[用户事件](/docs/en/managed-agents/events-and-streaming#event-types)的情况下自主运行最多 6 小时。6 小时后，会话需要重新认证才能继续。要重新认证，请向会话发送任何用户角色事件（参见[事件和流式传输](/docs/en/managed-agents/events-and-streaming)）。第一方 Claude 托管代理没有自主会话运行时限制。

### 不支持的功能

以下功能目前在 Claude Platform on AWS 上不可用：

- **HIPAA 就绪：** Anthropic 的 HIPAA 就绪计划不可用。参见 [API 和数据保留](/docs/en/manage-claude/api-and-data-retention)。

- **Admin API：** 工作区端点（在 `/v1/organizations/workspaces` 上创建、获取、列出、更新和归档）可用。其他 Admin API 端点（组织成员、工作区成员、邀请、API 密钥、使用报告、成本报告和速率限制报告）目前不可用。请改在 [Claude 控制台](#使用-claude-控制台)中查看使用和成本数据。AWS IAM 管理组织成员资格。
- **工作区成员管理：** 不支持添加或删除单个工作区的用户。工作区 ARN 上的 AWS IAM 策略控制访问。
- **支出限制：** 不可用。请改用 AWS 计费控制。
- **Claude Code 工作区和 Analytics API：** 具有自动速率限制的 Claude Code 工作区不可用。Claude Code 使用量出现在常规使用视图中，而不是专用屏幕。
- **OAuth 认证：** 不支持。使用 SigV4 或 API 密钥认证。
- **快速模式：** 在 Claude Platform on AWS 上不可用。
- **OpenAI 兼容 API 端点：** 在 Claude Platform on AWS 上不可用。
- **Webhooks：** 在 Claude Platform on AWS 上不可用。
- **Claude 托管代理多代理编排：** 目前在 Claude Platform on AWS 上每个会话仅支持一个代理。
- **Claude 托管代理自托管沙箱：** 仅支持 `cloud` 环境类型。
- **MCP 隧道：** 仅支持通过公共互联网暴露的 MCP 服务器。

## 数据驻留

Claude Platform on AWS 支持以下推理地理位置：

- **美国：** 推理保持在美国数据中心内。适用 1.1 倍定价乘数。
- **全球：** 推理可以路由到全球任何 Anthropic 运营的数据中心。适用标准定价。

<Note>
您的工作区绑定的 AWS 区域控制您调用哪个网关端点以及 AWS 端资源（IAM、CloudTrail、计费）的作用域。它不固定模型推理运行的位置。要将推理固定到特定地理位置，请在每个请求上设置 `inference_geo` 或配置工作区默认值。
</Note>

使用 `inference_geo` 参数设置每个请求的推理地理位置：

<Note>
`inference_geo` 参数在 Claude Opus 4.6、Claude Sonnet 4.6 及更高版本的模型上受支持。在 Claude Opus 4.5、Claude Sonnet 4.5 或 Claude Haiku 4.5 上使用 `inference_geo` 的请求会返回 400 错误。有关模型可用性详情，请参阅[数据驻留](/docs/en/manage-claude/data-residency)。
</Note>

<CodeGroup>

```bash cURL nocheck
# 将 us-west-2 替换为您的 AWS 区域（URL 和 --aws-sigv4 中都需要）
curl "https://aws-external-anthropic.us-west-2.api.aws/v1/messages" \
  --aws-sigv4 "aws:amz:us-west-2:aws-external-anthropic" \
  --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
  -H "x-amz-security-token: $AWS_SESSION_TOKEN" \
  -H "content-type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-workspace-id: $ANTHROPIC_AWS_WORKSPACE_ID" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "inference_geo": "us",
    "messages": [
      {"role": "user", "content": "Hello!"}
    ]
  }'
```

```python Python nocheck
from anthropic import AnthropicAWS

client = AnthropicAWS()
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    inference_geo="us",
    messages=[{"role": "user", "content": "Hello!"}],
)
print(message)
```

```typescript TypeScript nocheck
import AnthropicAws from "@anthropic-ai/aws-sdk";
const client = new AnthropicAws();
const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  inference_geo: "us",
  messages: [{ role: "user", content: "Hello!" }]
});
console.log(message);
```

```csharp C# nocheck
using Anthropic;
using Anthropic.Aws;

var client = new AnthropicAwsClient();

var message = await client.Messages.Create(new()
{
    Model = Model.ClaudeSonnet4_6,
    MaxTokens = 1024,
    InferenceGeo = "us",
    Messages = [new() { Role = Role.User, Content = "Hello!" }]
});

Console.WriteLine(message);
```

```go Go nocheck hidelines={1..11,-1}
package main

import (
	"context"
	"fmt"

	"github.com/anthropics/anthropic-sdk-go"
	anthropicaws "github.com/anthropics/anthropic-sdk-go/aws"
)

func main() {
	client, err := anthropicaws.NewClient(context.Background(), anthropicaws.ClientConfig{})
	if err != nil {
		panic(err)
	}

	message, err := client.Messages.New(context.Background(), anthropic.MessageNewParams{
		Model:        anthropic.ModelClaudeSonnet4_6,
		MaxTokens:    1024,
		InferenceGeo: anthropic.String("us"),
		Messages: []anthropic.MessageParam{
			anthropic.NewUserMessage(anthropic.NewTextBlock("Hello!")),
		},
	})
	if err != nil {
		panic(err)
	}

	fmt.Println(message)
}
```

```java Java nocheck
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_4_6)
            .maxTokens(1024)
            .inferenceGeo("us")
            .addUserMessage("Hello!")
            .build()
    );

    IO.println(message);
}
```

```php PHP nocheck hidelines={1}
<?php
use Anthropic\Aws\Client;

$client = new Client();

$message = $client->messages->create(
    model: 'claude-sonnet-4-6',
    maxTokens: 1024,
    inferenceGeo: 'us',
    messages: [['role' => 'user', 'content' => 'Hello!']],
);

echo $message;
```

```ruby Ruby nocheck
require "anthropic"

client = Anthropic::AWSClient.new

message = client.messages.create(
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  inference_geo: "us",
  messages: [{ role: "user", content: "Hello!" }]
)

puts message
```
</CodeGroup>

如果省略 `inference_geo`，请求使用工作区的 `default_inference_geo`（如果已配置），否则使用 `global`。

工作区级别的推理地理位置控制（`allowed_inference_geos` 和 `default_inference_geo`）也可在 Claude Platform on AWS 上使用。参见[工作区级别限制](/docs/en/manage-claude/data-residency#workspace-level-restrictions)。

## 工作区

Claude Platform on AWS 上的推理和资源请求针对工作区。您在这些 API 调用的 `anthropic-workspace-id` 头中传递工作区的 ID。工作区 ID 使用 `wrkspc_` 标记格式，后跟字母数字标识符（例如 `wrkspc_01AbCdEf23GhIj`）。如果您还没有工作区 ID，请参阅[获取您的工作区 ID](#获取您的工作区-id)。

### 工作区范围

工作区绑定到单个 AWS 区域。在 `us-west-2` 中创建的工作区只能通过 `us-west-2` 端点访问。使用量、配额、成本、文件、批处理和 Skills 都按工作区汇总，在 Claude 控制台中为您提供按区域的细分。

工作区还作为 Claude Platform on AWS 的主要 IAM 资源。您通过使用工作区 ARN 的 AWS IAM 策略授予或拒绝对特定工作区的访问。ARN 的资源段与您在 `anthropic-workspace-id` 头中传递的 `wrkspc_` 前缀 ID 相同：

```text
arn:aws:aws-external-anthropic:{region}:{account-id}:workspace/{workspace-id}
```

例如：

```text
arn:aws:aws-external-anthropic:us-west-2:123456789012:workspace/wrkspc_01AbCdEf23GhIj
```

有关策略示例，请参阅 [IAM 策略](#iam-策略)。

### 管理工作区

从 AWS 控制台 **Workspaces** 页面或使用 [Admin API](/docs/en/manage-claude/admin-api) 工作区端点创建额外工作区、重命名工作区或归档工作区。新工作区绑定到您调用以创建它的端点的 AWS 区域（参见[工作区范围](#工作区范围)）。Claude 控制台工作区页面是只读的。

## 使用 Claude 控制台

Claude Platform on AWS 使用标准 Claude 控制台，地址为 [platform.claude.com](https://platform.claude.com)。当您从 AWS 控制台登录时，Claude 控制台侧边栏左下角会出现 **Account managed by AWS** 指示器，控制台限定到您的 Claude Platform on AWS 组织。它提供使用分析、成本细分、速率限制可见性、工作区可见性，以及用于管理文件、Agent Skills、批处理作业和 Claude 托管代理资源（代理、会话、环境、凭证库和内存存储）的页面。

### 登录

对 Claude 控制台的访问通过 AWS IAM 联合。有关完整的首次登录流程，请参阅[设置您的账户](#设置您的账户)。简而言之：

1. 假设具有 `aws-external-anthropic:AssumeConsole` 权限的 IAM 角色。参见 [Claude Platform on AWS 的 IAM 操作](/docs/en/api/claude-platform-on-aws-iam-actions#console-access)。
2. 导航到 [AWS 控制台](https://console.aws.amazon.com/)中的 Claude Platform on AWS 页面。
3. 选择 **Open Claude Console**。AWS 控制台颁发 JWT 并将您重定向到 `platform.claude.com`。
4. 首次登录时，系统会提示您输入电子邮件地址；输入您的工作电子邮件。平台即时配置您的 Claude 控制台用户。

两个 Claude 控制台角色可用：**Admin** 和 **Developer**。Admin 角色授予对 Claude Platform on AWS 可用的所有 Claude 控制台页面和设置的访问权限。Developer 角色授予对使用量、成本、速率限制和工作区信息的读取访问权限。请联系您的 Anthropic 客户代表将 Admin 或 Developer 角色分配给主体。

### 可用页面

**Through AWS gateway** 列指示页面是否通过 AWS 网关读取和写入数据（因此受 [IAM 操作](/docs/en/api/claude-platform-on-aws-iam-actions)约束）。标记为 **No** 的页面直接通过 Anthropic API 读取组织级元数据，绕过 IAM 操作检查。

| 页面 | 可用 | 通过 AWS 网关 | 备注 |
| :--- | :--- | :--- | :--- |
| **Usage** | 是 | 否 | 按模型、工作区和维度查看 token 使用量。请求后数据可能需要几分钟才能出现。 |
| **Cost** | 是 | 否 | 按模型和工作区查看成本细分。AWS Cost Explorer 显示聚合的 [Claude 消耗单元 (CCU)](#计费) 行项目。 |
| **Limits** | 是 | 否 | 查看速率限制（只读）。 |
| **Workspaces** | 是 | 否 | 查看按区域的工作区（只读）。 |
| **Files** | 是 | 是 | 查看和管理上传的文件。 |
| **Skills** | 是 | 是 | 查看和管理 Agent Skills。 |
| **Batches** | 是 | 是 | 查看和管理批处理作业。 |
| **Agents** | 是 | 是 | 查看和管理代理定义。 |
| **Sessions** | 是 | 是 | 查看代理会话和事件历史。 |
| **Environments** | 是 | 是 | 查看和管理会话的云容器配置。 |
| **Credential vaults** | 是 | 是 | 查看和管理会话认证的凭证库。 |
| **Memory stores** | 是 | 是 | 查看和管理持久代理内存。 |
| **API keys** | 否 | 不适用 | 在 AWS 控制台中管理 API 密钥（**Claude Platform on AWS -> API keys**）。参见 [API 密钥认证](#api-密钥认证)。 |
| **Members** | 否 | 不适用 | 不适用。AWS IAM 管理访问。 |
| **Billing** | 否 | 不适用 | 不适用。AWS Marketplace 管理计费和开票。在 Cost 页面查看成本细分。 |
| **Claude Code** | 否 | 不适用 | 在 Usage 页面查看 Claude Code 使用量。 |

### 切换组织

Claude 控制台不支持 Claude Platform on AWS 的组织切换。要访问不同的组织，请注销并通过该组织 AWS 账户的 IAM 角色在 AWS 控制台中重新认证。

## 速率限制和配额

Claude Platform on AWS 在注册时分配第 1 层速率限制。Anthropic 直接管理速率限制，而不是通过 AWS 配额系统。

与第一方 Claude API 不同，自动层级晋升不适用。如果您需要更高的限制，请联系您的 Anthropic 客户代表。有关层级详情和每模型限制，请参阅[速率限制](/docs/en/api/rate-limits)。

## 计费

Claude Platform on AWS 通过 [AWS Marketplace](https://aws.amazon.com/marketplace) 计费。使用量以 Claude 消耗单元 (CCU) 计价，按小时计量，每月在您的 AWS 账单上按后付费方式开具发票。CCU 不是预付积分；没有 CCU 余额或承诺。

有关 CCU 价格、转换机制、折扣应用和每模型 token 费率，请参阅 [Claude Platform on AWS 定价](/docs/en/about-claude/pricing#claude-platform-on-aws-pricing)。

## 监控和日志

AWS CloudTrail 可以捕获对 Claude Platform on AWS 的所有请求。工作区和库操作默认记录为管理事件。推理、批处理、文件、技能、模型、用户配置文件和 Claude 托管代理操作（库除外）被归类为数据事件，需要显式数据事件日志配置，这会产生额外的 CloudTrail 费用。有关完整的事件类型分类，请参阅 [IAM 操作参考](/docs/en/api/claude-platform-on-aws-iam-actions#route-to-action-mapping)，有关配置详情，请参阅 [AWS CloudTrail 文档](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。

### 请求 ID

每个响应在响应头中包含两个请求 ID：

- **AWS 请求 ID（`x-amzn-requestid`）：** 主要 ID，在 CloudTrail 中索引。通过 AWS 工具调查请求或联系 AWS 支持时使用此 ID。
- **Anthropic 请求 ID（`request-id`）：** 辅助 ID。联系 Anthropic 支持时使用此 ID。

<CodeGroup>

```python Python nocheck
from anthropic import AnthropicAWS

client = AnthropicAWS()

response = client.messages.with_raw_response.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}],
)

print(response.headers.get("x-amzn-requestid"))  # AWS 请求 ID
print(response.headers.get("request-id"))  # Anthropic 请求 ID

message = response.parse()
print(message.content)
```

```typescript TypeScript nocheck
import AnthropicAws from "@anthropic-ai/aws-sdk";

const client = new AnthropicAws();

const { data: message, response } = await client.messages
  .create({
    model: "claude-sonnet-4-6",
    max_tokens: 1024,
    messages: [{ role: "user", content: "Hello!" }]
  })
  .withResponse();

console.log(response.headers.get("x-amzn-requestid")); // AWS 请求 ID
console.log(response.headers.get("request-id")); // Anthropic 请求 ID
console.log(message.content);
```

```csharp C# nocheck
using Anthropic;
using Anthropic.Aws;

var client = new AnthropicAwsClient();

var response = await client.WithRawResponse.Messages.Create(new()
{
    Model = Model.ClaudeSonnet4_6,
    MaxTokens = 1024,
    Messages = [new() { Role = Role.User, Content = "Hello!" }]
});

Console.WriteLine(response.Headers.GetValues("x-amzn-requestid").First()); // AWS 请求 ID
Console.WriteLine(response.Headers.GetValues("request-id").First()); // Anthropic 请求 ID
Console.WriteLine(response.Value.Content);
```

```go Go nocheck hidelines={1..13,-1}
package main

import (
	"context"
	"fmt"
	"net/http"

	"github.com/anthropics/anthropic-sdk-go"
	anthropicaws "github.com/anthropics/anthropic-sdk-go/aws"
	"github.com/anthropics/anthropic-sdk-go/option"
)

func main() {
	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.ModelClaudeSonnet4_6,
			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 请求 ID
	fmt.Println(response.Header.Get("request-id"))       // Anthropic 请求 ID
	fmt.Println(message.Content)
}
```

```java Java nocheck
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_4_6)
            .maxTokens(1024)
            .addUserMessage("Hello!")
            .build()
    );

    IO.println(response.headers().values("x-amzn-requestid").get(0)); // AWS 请求 ID
    IO.println(response.requestId().orElse(null)); // Anthropic 请求 ID
    IO.println(response.parse().content());
}
```

```php PHP nocheck hidelines={1}
<?php
use Anthropic\Aws\Client;

$client = new Client();

$response = $client->messages->raw->create(
    model: 'claude-sonnet-4-6',
    maxTokens: 1024,
    messages: [['role' => 'user', 'content' => 'Hello!']],
);

echo $response->getHeaderLine('x-amzn-requestid') . "\n"; // AWS 请求 ID
echo $response->getHeaderLine('request-id') . "\n"; // Anthropic 请求 ID
echo $response->parse()->content;
```

```ruby Ruby nocheck
# Ruby SDK 目前不支持访问原始响应头。
# 要检查 x-amzn-requestid 头，请使用其他 SDK 示例之一。
```
</CodeGroup>

Anthropic 建议至少保留 30 天的滚动活动日志，以了解使用模式并调查任何潜在问题。

<Note>
AWS CloudTrail 在您的 AWS 账户中配置。启用日志不会让 AWS 或 Anthropic 访问您的内容，超出计费和服务运营所需的内容。
</Note>

## 从 Amazon Bedrock 迁移

如果您当前使用 Bedrock 上的 Claude，迁移到 Claude Platform on AWS 需要整个集成的更改。SigV4 签名仍然受支持，但签名上下文、基础 URL、API 格式、模型 ID、SDK 客户端和包、流式格式、请求头和区域可用性都会更改。下表总结了差异。

### 什么会改变

迁移增量取决于您来自哪个 Bedrock 集成。下表显示了[当前 Bedrock 集成](/docs/en/build-with-claude/claude-in-amazon-bedrock)（`bedrock-mantle.{region}.api.aws` 处的 Messages API）和[旧版 InvokeModel 集成](/docs/en/build-with-claude/claude-on-amazon-bedrock-legacy)。

| 方面 | 从 [Claude in Amazon Bedrock](/docs/en/build-with-claude/claude-in-amazon-bedrock) | 从 [Amazon Bedrock（旧版）](/docs/en/build-with-claude/claude-on-amazon-bedrock-legacy) | 到 Claude Platform on AWS |
| :--- | :--- | :--- | :--- |
| **基础 URL** | `bedrock-mantle.{region}.api.aws` | `bedrock-runtime.{region}.amazonaws.com` | `aws-external-anthropic.{region}.api.aws` |
| **API 格式** | `/anthropic/v1/messages` 处的 Messages API | Bedrock Converse / InvokeModel | Claude API (`/v1/{endpoint}`) |
| **模型 ID** | `anthropic.claude-opus-4-6` | `anthropic.claude-opus-4-6-v1`（带可选 `us.`/`global.` 前缀） | `claude-opus-4-6` |
| **SDK 客户端** | `AnthropicBedrockMantle` | `AnthropicBedrock` / Bedrock SDK | 平台特定客户端（参见[安装 SDK](#安装-sdk)），测试版 |
| **SDK 包** | `anthropic[bedrock]`、`@anthropic-ai/bedrock-sdk` 等 | `anthropic[bedrock]`、`@anthropic-ai/bedrock-sdk` 或 AWS SDK | `anthropic[aws]`、`@anthropic-ai/aws-sdk` 等（参见[安装 SDK](#安装-sdk)） |
| **SigV4 服务名称** | `bedrock-mantle` | `bedrock` | `aws-external-anthropic` |
| **流式格式** | SSE | AWS EventStream | SSE（与 Claude API 相同） |
| **工作区头** | 不适用 | 不适用 | 必需 `anthropic-workspace-id` |
| **区域可用性** | 参见 [Amazon Bedrock 区域](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-regions.html) | 参见 [Amazon Bedrock 区域](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-regions.html) | 所有 AWS 商业区域 |

如果您使用的是当前 Bedrock 集成，请求体格式已经是 Messages API；更改包括基础 URL、SigV4 服务名称、模型 ID 和添加 `anthropic-workspace-id` 头。如果您使用的是旧版 InvokeModel 或 Converse API，您还需要将请求和响应格式重写为 Messages API 格式。有关请求格式映射，请参阅 [Claude on Amazon Bedrock（旧版）](/docs/en/build-with-claude/claude-on-amazon-bedrock-legacy)。

### 您获得什么

- 通常与新模型和功能同天访问（参见[功能限制](#不支持的功能)）
- 用于文档生成的 Agent Skills（PowerPoint、Excel、Word、PDF）
- 在 Anthropic 的托管沙箱中执行代码
- 通过 `anthropic-beta` 头访问测试版功能（参见[功能限制](#不支持的功能)）
- Claude 控制台用于配额可见性和使用分析
- Anthropic 直接支持
- API 密钥认证作为 SigV4 的替代方案（参见 [API 密钥认证](#api-密钥认证)）

### 什么保持不变

- AWS IAM 认证（SigV4）
- AWS 作为开票方（计费渠道从原生 AWS 服务更改为 AWS Marketplace；参见[商业考虑](#商业考虑)）
- AWS 承诺退役

### 迁移陷阱

<Warning>
**首先启用出站 Web 身份联合。** 如果您的 AWS 账户之前未使用过 Claude Platform on AWS，您必须在发起请求之前每个账户[启用出站 Web 身份联合](#启用出站-web-身份联合)一次。没有此步骤，所有请求都会因联合错误而失败（有关确切错误和修复，请参阅[启用出站 Web 身份联合](#启用出站-web-身份联合)）。此步骤对 Bedrock 不是必需的。
</Warning>

<Warning>
**零数据保留 (ZDR) 在 Claude Platform on AWS 上是选择性加入的。** 在 Bedrock 上，AWS 是数据处理者，Anthropic 不保留推理输入或输出；Anthropic 的 ZDR 计划在那里不适用。在 Claude Platform on AWS 上，Anthropic 作为独立数据处理者处理推理数据，ZDR 遵循第一方 Claude API 模型：可通过您的 Anthropic 客户代表应请求提供。在迁移依赖数据保留保证的生产工作负载之前，请确认 ZDR 注册。
</Warning>

### 商业考虑

- **Anthropic 服务条款：** 使用 Claude Platform on AWS 需要接受 Anthropic 的商业服务条款和使用政策。如果您的组织尚未接受这些（例如，如果您只通过 Bedrock 使用 Claude），您会在账户设置期间被提示。参见[设置您的账户](#设置您的账户)。
- **折扣和私有报价：** 协商的折扣和 AWS Marketplace 私有报价不会在 Bedrock 和 Claude Platform on AWS 之间自动转移。请与您的 Anthropic 客户代表合作，为 Claude Platform on AWS 设置商业条款。

## IAM 策略

Claude Platform on AWS 与 AWS IAM 集成以进行访问控制。您使用标准 IAM 策略语法授予或拒绝对特定工作区上特定 API 操作的访问。

SigV4 服务名称和 IAM 操作命名空间是 `aws-external-anthropic`。操作遵循 `aws-external-anthropic:<Action>` 模式（例如 `aws-external-anthropic:CreateInference`）。

### 示例：拒绝批处理推理

以下策略允许实时推理同时阻止批处理：

```json
{
  "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 敏感工作负载的仅拒绝策略，请参阅 [ZDR 敏感工作区的功能锁定](/docs/en/api/claude-platform-on-aws-iam-actions#feature-lockdown-for-a-zdr-sensitive-workspace)。

<Note>
`ListWorkspaces` 是账户范围的，因此它出现在单独的 Allow 语句中，`"Resource": "*"`。在账户范围的操作上指定工作区 ARN 没有效果（参见[配置自动化](/docs/en/api/claude-platform-on-aws-iam-actions#provisioning-automation)）。

此策略假设 AWS SigV4 认证。如果主体使用 API 密钥认证，还需将 `aws-external-anthropic:CallWithBearerToken` 添加到 `"Resource": "*"` Allow 语句中。`CallWithBearerToken` 是一个无路由的认证层操作，不绑定到工作区 ARN。有关双语句模式，请参阅[每客户工作区隔离](/docs/en/api/claude-platform-on-aws-iam-actions#per-customer-workspace-isolation)。
</Note>

### 托管策略

AWS 提供四个托管策略（`AnthropicFullAccess`、`AnthropicReadOnlyAccess`、`AnthropicInferenceAccess` 和 `AnthropicLimitedAccess`）用于常见访问模式。有关每个策略授予的操作、IAM 操作的完整列表、路由到操作的映射以及其他策略示例，请参阅 [Claude Platform on AWS 的 IAM 操作](/docs/en/api/claude-platform-on-aws-iam-actions#managed-policies)。

## 其他资源

- **Claude Platform on AWS 的 Claude 控制台：** [platform.claude.com](https://platform.claude.com)（通过 AWS 控制台访问）
- **定价详情：** [定价](/docs/en/about-claude/pricing#claude-platform-on-aws-pricing)
- **Bedrock（AWS 运营的 Claude）：** [Claude in Amazon Bedrock](/docs/en/build-with-claude/claude-in-amazon-bedrock)
- **AWS Marketplace：** [aws.amazon.com/marketplace](https://aws.amazon.com/marketplace)