View a markdown version of this page

提出请求 - AWS 上的 Claude 平台

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

提出请求

AWS 上的 Claude 平台使用 Anthropic Messages API (/v1/messages),这与 Claude 第一方平台的 API 表面相同。区别在于基本 URL、身份验证方法和anthropic-workspace-id标识请求目标工作空间的必填标头。

壳牌

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

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

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);

C#

using Anthropic; using Anthropic.Aws; var client = new AnthropicAwsClient(); var message = await client.Messages.Create(new() { Model = "claude-sonnet-4-6", MaxTokens = 1024, Messages = [new() { Role = "user", Content = "Hello!" }] }); Console.WriteLine(message);

Go

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.Content[0].Text)

Java

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; 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;

Ruby

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

客户端ANTHROPIC_AWS_WORKSPACE_ID从环境中读取AWS_REGION(或AWS_DEFAULT_REGION)和。你可以通过将aws_region/awsRegionworkspace_id/传递给构造函数workspaceId来覆盖。区域和工作空间 ID 均为必填项;如果无法从这些源中解析出任何一个,则构造函数会抛出。

注意

只有临时证书(例如 IAM 角色、SSO 或 STS)才需要x-amz-security-token标头 (curl)。使用长期 IAM 用户证书时,请将其省略。SDK 客户端会根据凭证来源自动处理此问题。

--aws-sigv4值遵循格式aws:amz:<region>:<service>。Sigv4 服务名称为aws-external-anthropic,并且该区域必须与您的终端节点 URL 中的区域匹配。两者中的不匹配都会产生一般的签名拒绝错误,而不是特定的诊断。

使用基本的 Anthropic 客户端

如果您不想添加 AWS 开发工具包依赖项,则可以使用基础Anthropic客户端。此路径使用 vanilla SDK 环境变量ANTHROPIC_AWS_*名称,而不是专用客户端读取的名称:

export ANTHROPIC_API_KEY='your-api-key' export ANTHROPIC_BASE_URL='https://aws-external-anthropic.us-west-2.api.aws' export ANTHROPIC_WORKSPACE_ID='your-workspace-id'

Python TypeScript、和 Go SDK ANTHROPIC_BASE_URL 会自动读取ANTHROPIC_API_KEY;对于其他语言,请将它们传递给构造函数。在每种语言中,在anthropic-workspace-id标题中传递工作空间 ID。

Python

import os from anthropic import Anthropic client = Anthropic( # ANTHROPIC_API_KEY and ANTHROPIC_BASE_URL are read automatically default_headers={"anthropic-workspace-id": os.environ["ANTHROPIC_WORKSPACE_ID"]}, ) message = client.messages.create( model="claude-sonnet-4-6", max_tokens=1024, messages=[{"role": "user", "content": "Hello!"}], ) print(message.content[0].text)

TypeScript

import Anthropic from "@anthropic-ai/sdk"; const client = new Anthropic({ // ANTHROPIC_API_KEY and ANTHROPIC_BASE_URL are read automatically defaultHeaders: { "anthropic-workspace-id": process.env.ANTHROPIC_WORKSPACE_ID } }); const message = await client.messages.create({ model: "claude-sonnet-4-6", max_tokens: 1024, messages: [{ role: "user", content: "Hello!" }] }); console.log(message.content);