기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
모니터링 및 로깅
AWS CloudTrail은 AWS의 Claude 플랫폼에 대한 모든 요청을 캡처할 수 있습니다. Workspace 및 볼트 작업은 기본적으로 관리 이벤트로 기록됩니다. 다른 모든 작업(예: 볼트를 제외한 추론, 배치, 파일, 스킬, 모델, 사용자 프로필 및 Claude Managed Agents)은 데이터 이벤트입니다. 로깅하려면 명시적 구성이 필요하며 추가 CloudTrail 요금이 발생합니다. 전체 이벤트 유형 분류는 IAM 작업을 참조하고 구성 세부 정보는 AWS CloudTrail 설명서를 참조하세요.
CloudTrail 데이터 이벤트 로깅을 구성할 때 리소스 유형을 선택합니다AWS::AWSExternalAnthropic::Workspace. 이는 AWS 워크스페이스의 Claude Platform에 대한 CloudTrail 리소스 유형이며 데이터 영역 이벤트(추론, 배치, 파일 및 기타 워크스페이스별 작업)를 캡처하는 데 필요합니다. 전체 계정이 아닌 워크스페이스 하위 집합에 대한 활동을 로깅하려는 경우 데이터 이벤트 선택기를 특정 워크스페이스 ARNs으로 범위를 지정합니다.
요청 IDs
각 응답에는 응답 헤더에 두 개의 요청 IDs가 포함됩니다.
-
AWS 요청 ID(
x-amzn-requestid): CloudTrail에서 인덱싱된 기본 ID입니다. 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의 응답 헤더에서 요청 IDs를 읽을 수 없습니다. 요청 ID 로깅이 필요한 경우 위의 다른 언어를 사용하거나 HTTP 프록시 계층에서 IDs를 캡처합니다.
Anthropic은 사용 패턴을 이해하고 잠재적 문제를 조사하기 위해 최소 30일 연속으로 활동을 로깅할 것을 권장합니다.
참고
AWS CloudTrail은 AWS 계정 내에서 구성됩니다. 로깅을 활성화해도 결제 및 서비스 작업에 필요한 것 이상으로 콘텐츠에 대한 AWS 또는 Anthropic 액세스는 제공되지 않습니다.
사용량 지표 및 대시보드
AWS의 Claude Platform은 Amazon CloudWatch에 워크스페이스당 사용량 지표를 게시하지 않습니다. 토큰 수, 요청 볼륨 및 모델별 사용량은 Anthropic의 사용 표면을 통해 대신 사용할 수 있습니다.
-
Claude 콘솔 사용 보기 - 보안 주체가를 사용하여 Claude 콘솔에 페더레이션하면
aws-external-anthropic:AssumeConsole(IAM 정책 참조) 사용 대시보드에 액세스 가능한 워크스페이스에 대한 요청 볼륨, 토큰 수 및 모델별 분류가 표시됩니다. 계정 전체 사용량 보기에는 관리자 콘솔 기능이 필요합니다. -
Anthropic Usage and Cost API - 워크스페이스별 및 모델별 집계를 포함하여 사용량 및 비용 데이터에 프로그래밍 방식으로 액세스하려면 Anthropic 설명서의 Usage and Cost API
를 참조하세요.
운영 모니터링(오류율, 지연 시간, 속도 제한 헤더)의 경우 CloudTrail에 캡처된 AWS 요청 IDs와 함께 모든 요청에 대해 반환된 응답 헤더(속도 제한 및 할당량 참조)를 사용합니다.
비용 할당 및 모니터링
AWS의 Claude 플랫폼 요금은 AWS의 Claude 플랫폼 서비스 아래의 AWS 청구서에 모델별 사용 차원과 함께 표시됩니다. 세분화된 비용 할당을 위해 워크스페이스 태그와 결합된 AWS 비용 및 사용 보고서(CUR)를 사용합니다.
-
관심 있는 할당 차원(팀, 애플리케이션, 환경, 비용 센터)으로 워크스페이스에 태그를 지정합니다. 태그 지정 세부 정보는 Workspaces를 참조하세요.
-
AWS Billing 콘솔에서 각 태그 키를 비용 할당 태그로 활성화합니다. 활성화 후 활성화 날짜 또는 그 이후에 발생한 사용량은 CUR의 태그로 분할됩니다.
-
CUR 또는 AWS Cost Explorer에서
resourceTags/user:<tag-key>열을 기준으로 그룹화하여 워크스페이스 태그별로 지출을 분류합니다.
Workspace 태그는 AWS의 모든 Claude Platform 사용에 대해 CUR 라인 항목으로 흐릅니다. 동일한 태그 키는 IAM 기반 액세스 제어와 비용 할당을 모두 구동합니다. 설정 단계 및 활성화 지연은 AWS Billing 설명서의 비용 할당 태그를 참조하세요.