View a markdown version of this page

监控和日志记录 - AWS 上的 Claude 平台

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

监控和日志记录

AWS CloudTrail 可以在 AWS 上捕获对 Claude 平台的所有请求。默认情况下,工作空间和文件库操作被记录为管理事件。所有其他操作(推理、批处理、文件、技能、模型、用户配置文件和 Claude Managed Agent,保管库除外)均为数据事件。记录它们需要进行明确的配置,并且会产生额外 CloudTrail 费用。有关完整的事件类型分类,请参阅 IAM 操作;有关配置的详细信息,请参 CloudTrail 阅 AWS 文档

配置 CloudTrail 数据事件记录时,请选择资源类型AWS::AWSExternalAnthropic::Workspace。这是 AWS 工作空间上的 Claude Platform 的 CloudTrail 资源类型,是捕获数据平面事件(推理、批处理、文件和其他按工作空间执行的操作)所必需的。如果您想记录工作空间子集而不是整个账户的活动,请将数据事件选择器范围限定为特定的工作空间 ARN。

请求 ID

每个响应的响应标头中都包含两个请求 ID:

  • AWS 请求 ID (x-amzn-requestid):主编号,已编入索引。 CloudTrail在通过 AWS 工具调查请求或联系 AWS 支持人员时,请使用此选项。

  • Anthropic 请求 ID (request-id):次要 ID。在联系 Anthropic 支持人员时使用此选项。

Python

from anthropic import AnthropicAWS client = AnthropicAWS(aws_region="us-west-2") 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 request ID print(response.headers.get("request-id")) # Anthropic request ID message = response.parse() print(message.content)

TypeScript

import AnthropicAws from "@anthropic-ai/aws-sdk"; const client = new AnthropicAws({ awsRegion: "us-west-2" }); 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 request ID console.log(response.headers.get("request-id")); // Anthropic request ID console.log(message.content);

C#

using Anthropic; using Anthropic.Aws; var client = new AnthropicAwsClient(new() { AwsRegion = "us-west-2" }); var response = await client.WithRawResponse.Messages.Create(new() { Model = "claude-sonnet-4-6", MaxTokens = 1024, Messages = [new() { Role = "user", Content = "Hello!" }] }); Console.WriteLine(response.Headers.GetValues("x-amzn-requestid").First()); // AWS request ID Console.WriteLine(response.Headers.GetValues("request-id").First()); // Anthropic request ID Console.WriteLine(response.Value.Content);

Go

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 request ID fmt.Println(response.Header.Get("request-id")) // Anthropic request ID 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.core.http.HttpResponseFor; 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(); 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")); // AWS request ID IO.println(response.requestId()); // Anthropic request 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 request ID echo $response->getHeaderLine('request-id') . "\n"; // Anthropic request ID echo $response->parse();

Ruby

Ruby SDK 目前未公开原始响应访问器,因此无法从 Ruby 中的响应标头中读取请求 ID。如果您需要 request-ID 日志记录,请使用上述任何其他语言,或者在 HTTP 代理层捕获 ID。

Anthropic 建议至少连续记录 30 天的活动,以了解使用模式并调查任何潜在问题。

注意

AWS CloudTrail 是在您的 AWS 账户中配置的。除了账单和服务运营所需的权限外,启用日志记录不会让 AWS 或 Anthropic 访问您的内容。

使用情况指标和仪表板

AWS 上的 Claude Platform 不会向亚马逊发布每个工作空间的使用指标。 CloudWatch代币计数、请求量和每个模型的使用情况可通过 Anthropic 的使用界面获得:

  • Claude Console 使用视图 — 当委托人通过aws-external-anthropic:AssumeConsole(参见 IAM 政策)联合到 Claude 控制台时,使用情况控制面板会显示可访问工作空间的请求量、令牌数量和每个模型的细分。 Account-wide 使用情况视图需要管理员控制台功能。

  • Anthropic 使用情况和成本 API — 要以编程方式访问使用量和成本数据,包括每个工作空间和每个模型的聚合,请参阅 Anthropic 文档中的使用情况和成本 API

要进行操作监控(错误率、延迟、速率限制标头),请使用每个请求返回的响应标头(参见速率限制和配额)以及中捕获的 AWS 请求 ID CloudTrail。

成本分配和监控

Claude Platform on AWS 费用显示在 AWS 服务上的 Claude 平台下的 AWS 账单上,并附有每个型号的使用维度。将 AWS 成本和使用率报告 (CUR) 与工作空间标签结合使用,进行精细的成本分配:

  1. 使用您关心的分配维度(团队、应用程序、环境、成本中心)标记您的工作空间。有关标签的详细信息,请参阅工作区

  2. 在 AWS 账单控制台中,将每个标签密钥激活为成本分配标签。激活后,激活日期当天或之后产生的使用量将按照 CUR 中的标签进行拆分。

  3. 在 CUR 或 AWS Cost Explorer 中,按resourceTags/user:<tag-key>列分组以按工作空间标签细分支出。

工作区标签会流向 AWS 上所有 Claude 平台使用情况的 CUR 行项目。相同的标签密钥可以驱动 IAM-based 访问控制和成本分配。有关设置步骤和激活延迟,请参阅 AWS 账单文档中的成本分配标签