View a markdown version of this page

提出要求 - AWS 上的 Claude 平台

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

提出要求

AWS 上的 Claude 平台使用 Anthropic Messages API (/v1/messages),與 Claude 第一方平台相同的 API 表面。差異在於基本 URL、身分驗證方法,以及識別請求目標之工作區的必要anthropic-workspace-id標頭。

Shell

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 都是必要的;如果無法從這些來源解析,建構函數會擲回 。

注意

只有臨時登入資料需要 x-amz-security-token標頭 (curl),例如 IAM 角色、SSO 或 STS。使用長期 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 SDKsANTHROPIC_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);