Claude Platform on AWS

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


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

Note

Anthropic SDK 支持 Claude Platform on AWS。有关各语言客户端的可用性,请参阅客户端 SDK

平台集成的工作原理

Claude 模型运行在 Anthropic 托管的基础设施上。这是一个通过 AWS 进行计费和访问的商业集成。Anthropic 是推理输入和输出的数据处理者;AWS 在市场模型下处理计费和身份元数据。通过 Claude Platform on AWS 使用 Claude 的客户受 Anthropic 数据使用条款的约束。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 AWSClaude in Amazon BedrockAmazon Bedrock(旧版)
谁运营堆栈AnthropicAWSAWS
API 接口Claude API (/v1/{endpoint})Messages API at /anthropic/v1/messagesBedrock Converse / InvokeModel
功能可用性通常与 Claude API 同天发布(参见功能限制按 Amazon Bedrock 发布计划按 Amazon Bedrock 发布计划
Agent Skills可用(测试版)不可用(需要代码执行)不可用
测试版功能通过 anthropic-beta 头传递(参见功能限制不支持 anthropic-beta不支持 anthropic-beta
认证AWS IAM / SigV4 或 API 密钥AWS IAM / SigV4AWS IAM / SigV4 或 bearer token(仅 C#、Go 和 Java SDK)
计费AWS MarketplaceAWS(原生服务)AWS(原生服务)
基础 URLaws-external-anthropic.{region}.api.awsbedrock-mantle.{region}.api.awsbedrock-runtime.{region}.amazonaws.com
SDK 客户端平台特定客户端类(例如 Python 中的 AnthropicAWS),测试版AnthropicBedrockMantleAnthropicBedrock / Bedrock SDK
控制台Claude 控制台(platform.claude.com,通过 AWS 控制台访问)Bedrock 控制台Bedrock 控制台
速率限制和配额由 Anthropic 管理由 AWS 管理由 AWS 管理
推理数据处理者AnthropicAWSAWS

如果您需要 AWS 运营的 Claude,请参阅 Claude in Amazon Bedrock。Claude Platform on AWS 使用与第一方 Claude API 和 Amazon Bedrock 分开的容量池。您可以在多个平台上运行工作负载并在它们之间进行故障转移。

支持 AWS PrivateLink 将您的 VPC 连接到 Claude Platform on AWS 端点。

何时选择 Bedrock: 受监管行业的组织如果需要 FedRAMP High、IL4、IL5 或 HIPAA 就绪的合规性,或者需要 AWS 作为唯一数据处理者,应使用 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 客户代表,以便您的折扣从第一个请求开始生效。折扣不能追溯应用于私有报价被接受之前产生的使用量。参见私有报价

  1. 在 AWS 控制台注册

    1. 打开 AWS 控制台并导航到 Claude Platform on AWS 服务页面。
    2. 选择 Sign up
    3. 在注册页面上,查看条款(Anthropic 的最终用户许可协议、AWS 隐私通知和 AWS 客户协议)并选择协议复选框。
    4. 选择 Continue

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

    如果您的组织有来自 Anthropic 的私有报价,控制台会查找它并提示您在 AWS Marketplace 中接受。有关详细信息,请参阅私有报价

    Note

    如果您使用 Claude Platform on AWS,您的内容(如提示和补全)由 Anthropic 在 AWS 之外处理。有关内容和元数据如何处理和存储的详细信息,请参阅 Anthropic 的数据使用政策

  2. 设置您的 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 控制台服务页面现在显示左侧导航,包含 HomeAPI keysQuickstartWorkspaces

  3. 创建您的工作区并记录其 ID

    完成设置后,AWS 控制台会提示您创建工作区。有关区域绑定、IAM 资源范围和创建额外工作区的详细信息,请参阅工作区

    在 AWS 控制台 Claude Platform on AWS 服务页面的 Workspaces 下或在 Claude 控制台中找到工作区 ID。工作区 ID 使用 wrkspc_ 格式,后跟字母数字标识符。

  4. 登录 Claude 控制台

    对 Claude 控制台的访问通过 AWS IAM 联合:

    1. 假设具有 aws-external-anthropic:AssumeConsole 权限的 IAM 角色。参见 Claude Platform on AWS 的 IAM 操作
    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 指示器。

账户设置故障排除

  • "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
  3. 在您的 AWS 账户上启用出站 Web 身份联合(一次性设置步骤;参见启用出站 Web 身份联合
  4. 您的工作区 ID(参见获取您的工作区 ID

启用出站 Web 身份联合

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

aws iam enable-outbound-web-identity-federation

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

aws iam get-outbound-web-identity-federation-info
Warning

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

获取您的工作区 ID

完成账户设置后,您从 AWS 控制台创建工作区(参见设置您的账户)。工作区绑定到单个 AWS 区域。您可以在 Claude 控制台Workspaces 下或 AWS 控制台服务页面的 Workspaces 部分找到工作区 ID。

设置 ANTHROPIC_AWS_WORKSPACE_IDAWS_REGION 环境变量,以便 SDK 客户端自动读取:

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 默认凭证提供者链支持的任何方法配置 AWS 凭证:

  • 环境变量(AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN
  • 共享凭证文件(~/.aws/credentials
  • 共享配置文件(~/.aws/config),包括 SSO 和 credential_process
  • Web 身份(AWS_WEB_IDENTITY_TOKEN_FILEAWS_ROLE_ARN),用于 IRSA 和 GitHub Actions
  • ECS 容器凭证
  • EC2 实例元数据服务(IMDS)

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

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 控制台中创建的密钥(用于第一方 API 访问)不能与 Claude Platform on AWS 端点一起使用。

短期 API 密钥

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

AWS 发布了用于 JavaScriptPythonJava 的 token 生成器库。每个库通过标准提供者链读取您的 AWS 凭证,并返回可与 x-api-key 头一起使用的限时 token。Token 有效期默认为 12 小时,上限为您请求的时长、AWS 凭证的过期时间和 12 小时中的较小值。有关安装和完整配置选项,请参阅链接的仓库 README。

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

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")
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();
}

如果您可以在本地生成 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-1AnthropicBedrock 不同,AnthropicAWS/AnthropicAws 客户端在构造函数参数和环境变量都未设置时会引发错误。

安装 SDK

Anthropic 的客户端 SDK 支持 Claude Platform on AWS。每个 SDK 提供一个平台特定的客户端类,处理 SigV4 签名、基于区域的基础 URL 构造和 anthropic-workspace-id 头。

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

npm install @anthropic-ai/aws-sdk
dotnet add package Anthropic.Aws
go get github.com/anthropics/anthropic-sdk-go
implementation("com.anthropic:anthropic-java-aws:2.33.0")
<dependency>
  <groupId>com.anthropic</groupId>
  <artifactId>anthropic-java-aws</artifactId>
  <version>2.33.0</version>
</dependency>
composer require anthropic-ai/sdk aws/aws-sdk-php
gem install anthropic aws-sdk-core
Note

Claude Platform on AWS 的 SDK 客户端处于测试版。

可用模型

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

模型模型 ID
Claude Opus 4.7claude-opus-4-7
Claude Opus 4.6claude-opus-4-6
Claude Sonnet 4.6claude-sonnet-4-6
Claude Opus 4.5claude-opus-4-5
Claude Sonnet 4.5claude-sonnet-4-5
Claude Haiku 4.5claude-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 模型

发起请求

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

# 将 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!"}
    ]
  }'
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)
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);
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);
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)
}
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
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;
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

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

Note

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

--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 上使用。有关例外情况,请参阅功能限制
  • 测试版功能: 传递标准 anthropic-beta 头以访问测试版功能,就像使用 Claude API 一样。
  • Agent Skills: 使用与 Claude API 相同的 container.skills 参数和测试版头来使用预构建和自定义 Agent Skills。所有预构建 Skills(PowerPoint、Excel、Word、PDF)都可以开箱即用。
  • 代码执行: 使用代码执行工具在 Anthropic 的托管沙箱中运行代码。
  • 工具使用: Computer use 和所有其他工具使用功能都可用。
  • 扩展思考: 使用与 Claude API 相同的参数启用扩展思考。
  • 流式传输: 完整的 SSE 流式传输支持,用于实时响应。
  • 批量处理: 提交批量请求用于高吞吐量工作负载。
  • Prompt caching: 缓存工具、系统提示和消息历史以减少延迟和成本。所有 prompt caching 功能(5 分钟 TTL、1 小时 TTL 和自动缓存)都可用。
  • Files API: 上传和跨请求引用文件。

有关与 Amazon Bedrock 的功能可用性差异,请参阅比较表

Claude 托管代理

Claude 托管代理在 Claude Platform on AWS 上可用,包括代理、环境、会话、凭证库和内存存储。

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

  • 自主会话重新认证: 会话可以在没有任何用户事件的情况下自主运行最多 6 小时。6 小时后,会话需要重新认证才能继续。要重新认证,请向会话发送任何用户角色事件(参见事件和流式传输)。第一方 Claude 托管代理没有自主会话运行时限制。

不支持的功能

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

  • HIPAA 就绪: Anthropic 的 HIPAA 就绪计划不可用。参见 API 和数据保留

  • Admin API: 工作区端点(在 /v1/organizations/workspaces 上创建、获取、列出、更新和归档)可用。其他 Admin API 端点(组织成员、工作区成员、邀请、API 密钥、使用报告、成本报告和速率限制报告)目前不可用。请改在 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 或配置工作区默认值。

使用 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 错误。有关模型可用性详情,请参阅数据驻留

# 将 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!"}
    ]
  }'
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)
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);
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);
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)
}
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
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;
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

如果省略 inference_geo,请求使用工作区的 default_inference_geo(如果已配置),否则使用 global

工作区级别的推理地理位置控制(allowed_inference_geosdefault_inference_geo)也可在 Claude Platform on AWS 上使用。参见工作区级别限制

工作区

Claude Platform on AWS 上的推理和资源请求针对工作区。您在这些 API 调用的 anthropic-workspace-id 头中传递工作区的 ID。工作区 ID 使用 wrkspc_ 标记格式,后跟字母数字标识符(例如 wrkspc_01AbCdEf23GhIj)。如果您还没有工作区 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 相同:

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 控制台 Workspaces 页面或使用 Admin API 工作区端点创建额外工作区、重命名工作区或归档工作区。新工作区绑定到您调用以创建它的端点的 AWS 区域(参见工作区范围)。Claude 控制台工作区页面是只读的。

使用 Claude 控制台

Claude Platform on AWS 使用标准 Claude 控制台,地址为 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 操作
  2. 导航到 AWS 控制台中的 Claude Platform on AWS 页面。
  3. 选择 Open Claude Console。AWS 控制台颁发 JWT 并将您重定向到 platform.claude.com
  4. 首次登录时,系统会提示您输入电子邮件地址;输入您的工作电子邮件。平台即时配置您的 Claude 控制台用户。

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

可用页面

Through AWS gateway 列指示页面是否通过 AWS 网关读取和写入数据(因此受 IAM 操作约束)。标记为 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 密钥认证
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 客户代表。有关层级详情和每模型限制,请参阅速率限制

计费

Claude Platform on AWS 通过 AWS Marketplace 计费。使用量以 Claude 消耗单元 (CCU) 计价,按小时计量,每月在您的 AWS 账单上按后付费方式开具发票。CCU 不是预付积分;没有 CCU 余额或承诺。

有关 CCU 价格、转换机制、折扣应用和每模型 token 费率,请参阅 Claude Platform on AWS 定价

监控和日志

AWS CloudTrail 可以捕获对 Claude Platform on AWS 的所有请求。工作区和库操作默认记录为管理事件。推理、批处理、文件、技能、模型、用户配置文件和 Claude 托管代理操作(库除外)被归类为数据事件,需要显式数据事件日志配置,这会产生额外的 CloudTrail 费用。有关完整的事件类型分类,请参阅 IAM 操作参考,有关配置详情,请参阅 AWS CloudTrail 文档

请求 ID

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

  • AWS 请求 ID(x-amzn-requestid): 主要 ID,在 CloudTrail 中索引。通过 AWS 工具调查请求或联系 AWS 支持时使用此 ID。
  • Anthropic 请求 ID(request-id): 辅助 ID。联系 Anthropic 支持时使用此 ID。
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)
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);
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);
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)
}
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
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 SDK 目前不支持访问原始响应头。
# 要检查 x-amzn-requestid 头,请使用其他 SDK 示例之一。

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

Note

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

从 Amazon Bedrock 迁移

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

什么会改变

迁移增量取决于您来自哪个 Bedrock 集成。下表显示了当前 Bedrock 集成bedrock-mantle.{region}.api.aws 处的 Messages API)和旧版 InvokeModel 集成

方面Claude in Amazon BedrockAmazon Bedrock(旧版)到 Claude Platform on AWS
基础 URLbedrock-mantle.{region}.api.awsbedrock-runtime.{region}.amazonaws.comaws-external-anthropic.{region}.api.aws
API 格式/anthropic/v1/messages 处的 Messages APIBedrock Converse / InvokeModelClaude API (/v1/{endpoint})
模型 IDanthropic.claude-opus-4-6anthropic.claude-opus-4-6-v1(带可选 us./global. 前缀)claude-opus-4-6
SDK 客户端AnthropicBedrockMantleAnthropicBedrock / Bedrock SDK平台特定客户端(参见安装 SDK),测试版
SDK 包anthropic[bedrock]@anthropic-ai/bedrock-sdkanthropic[bedrock]@anthropic-ai/bedrock-sdk 或 AWS SDKanthropic[aws]@anthropic-ai/aws-sdk 等(参见安装 SDK
SigV4 服务名称bedrock-mantlebedrockaws-external-anthropic
流式格式SSEAWS EventStreamSSE(与 Claude API 相同)
工作区头不适用不适用必需 anthropic-workspace-id
区域可用性参见 Amazon Bedrock 区域参见 Amazon Bedrock 区域所有 AWS 商业区域

如果您使用的是当前 Bedrock 集成,请求体格式已经是 Messages API;更改包括基础 URL、SigV4 服务名称、模型 ID 和添加 anthropic-workspace-id 头。如果您使用的是旧版 InvokeModel 或 Converse API,您还需要将请求和响应格式重写为 Messages API 格式。有关请求格式映射,请参阅 Claude on Amazon Bedrock(旧版)

您获得什么

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

什么保持不变

  • AWS IAM 认证(SigV4)
  • AWS 作为开票方(计费渠道从原生 AWS 服务更改为 AWS Marketplace;参见商业考虑
  • AWS 承诺退役

迁移陷阱

Warning

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

Warning

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

商业考虑

  • 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)。

示例:拒绝批处理推理

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

{
  "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 敏感工作区的功能锁定

Note

ListWorkspaces 是账户范围的,因此它出现在单独的 Allow 语句中,"Resource": "*"。在账户范围的操作上指定工作区 ARN 没有效果(参见配置自动化)。

此策略假设 AWS SigV4 认证。如果主体使用 API 密钥认证,还需将 aws-external-anthropic:CallWithBearerToken 添加到 "Resource": "*" Allow 语句中。CallWithBearerToken 是一个无路由的认证层操作,不绑定到工作区 ARN。有关双语句模式,请参阅每客户工作区隔离

托管策略

AWS 提供四个托管策略(AnthropicFullAccessAnthropicReadOnlyAccessAnthropicInferenceAccessAnthropicLimitedAccess)用于常见访问模式。有关每个策略授予的操作、IAM 操作的完整列表、路由到操作的映射以及其他策略示例,请参阅 Claude Platform on AWS 的 IAM 操作

其他资源