本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 CloudWatch 日志和 Amazon S3 监控模型调用
您可以使用模型调用日志来收集您在某个地区的 Amazon Bedrock 中使用的所有调用的调 AWS 账户 用日志、模型输入数据和模型输出数据。
通过调用日志,您可以收集完整的请求数据、响应数据以及与您的账户在某个区域中执行的支持调用相关的元数据。可以配置日志记录以提供日志数据发布到的目标资源。支持的目的地包括亚马逊 CloudWatch 日志和亚马逊简单存储服务 (Amazon S3)。仅支持来自相同账户和区域的目标。
默认情况下,模型调用日志记录处于禁用状态。启用模型调用日志记录后,将存储日志,直到删除日志记录配置为止。
以下操作可以记录模型调用。
注意
模型调用日志仅支持通过bedrock-runtime端点发出的调用。这包括该端点上的 OpenAI-compatible回复和聊天完成 API。调用日志当前无法捕获通过其他端点(例如相同的API)发出的调用。bedrock-mantle
使用 Converse API 时,您传递的任何图像或文档数据都将记录在 Amazon S3 中(前提是您已在 Amazon S3 中启用传送和图像日志记录功能)。
在启用调用日志记录之前,您需要设置 Amazon S3 或 CloudWatch 日志目标。您可以通过控制台或 API 启用调用日志记录。
设置 Amazon S3 目标
注意
使用 Amazon S3 作为日志记录目标时,该存储桶必须 AWS 账户 与 AWS 区域 您创建模型调用日志记录配置的存储桶相同。
您可以按照以下步骤在 Amazon Bedrock 中设置 S3 日志记录目标:
-
创建要将日志传输到 S3 存储桶。
-
向其添加如下所示的存储桶策略(替换
accountId、regionbucketName、和的值prefix):注意
当您使用权限
S3:GetBucketPolicy和S3:PutBucketPolicy配置日志记录时,系统会代表您自动将存储桶策略附加到存储桶。 -
(可选)如果在存储桶 SSE-KMS 上进行配置,请在 KMS 密钥上添加以下策略:
{ "Effect": "Allow", "Principal": { "Service": "bedrock.amazonaws.com" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "accountId" }, "ArnLike": { "aws:SourceArn": "arn:aws:bedrock:region:accountId:*" } } }
有关 S3 SSE-KMS 配置的更多信息,请参阅指定 KMS 加密。
注意
必须禁用存储桶 ACL 才能使存储桶策略生效。有关更多信息,请参阅禁用所有新存储桶的 ACL 并强制执行对象所有权。
设置 CloudWatch 日志目的地
您可以通过以下步骤设置登录亚马逊 Bedrock 的亚马逊 CloudWatch 日志目的地:
-
创建 CloudWatch 将在其中发布日志的日志组。
-
创建具有以下 CloudWatch 日志权限的 IAM 角色。
可信实体:
角色策略:
有关为 CloudWatch 日志设置 SSE 的更多信息,请参阅使用加密日志中的 CloudWatch 日志数据 AWS Key Management Service。
使用控制台启用模型调用日志记录
启用模型调用日志
使用有权使用亚马逊 Bedrock 控制台的 IAM 身份登录。 AWS 管理控制台 然后,在以下位置打开亚马逊 Bedrock 控制台。 https://console.aws.amazon.com/bedrock
-
在左侧导航窗格中,选择设置。
-
在模型调用日志记录页面中,选择模型调用日志。将显示用于记录的其他配置设置。
-
选择要发布到日志的数据请求和响应的方式。您可以选择以下输出选项的任意组合:
-
文本
-
Image
-
嵌入
-
视频
注意
将记录支持您选择的模态(无论是输入还是输出)的所有模型的数据。例如,如果您选择 “图像”,则将记录所有支持图像输入、图像输出或两者的模型的模型调用。
-
-
选择在哪里发布日志:
-
仅限 Amazon S3
-
CloudWatch 仅限日志
-
亚马逊 S3 和 CloudWatch 日志
-
日志记录目标
调用 CloudWatch 日志和少量输入和输出数据支持 Amazon S3 和日志目的地。对于大型输入和输出数据或二进制图像输出,仅支持 Amazon S3。以下详细信息总结了目标位置的数据表示形式。
-
S3 目标 — Gzip 类型的 JSON 文件(每个文件都包含一批调用日志记录)被传输到指定的 S3 存储桶。与 CloudWatch 日志事件类似,每条记录将包含调用元数据以及大小不超过 100 KB 的输入和输出 JSON 正文。大于 100 KB 的二进制数据或 JSON 正文将作为单个对象上传到相应数据前缀下的指定 Amazon S3 存储桶中。可以使用 Amazon S3 Select 和 Amazon Athena 对数据进行查询,也可以使用 AWS Glue对 ETL 进行编目。数据可以加载到 OpenSearch 服务中,也可以由任何亚马逊 EventBridge 目标处理。
-
CloudWatch 日志目的地 — JSON 调用日志事件传送到日志中的 CloudWatch 指定日志组。日志事件包含调用元数据以及大小不超过 100 KB 的输入和输出 JSON 正文。如果提供了用于大型数据传输的 Amazon S3 位置,则大于 100 KB 的二进制数据或 JSON 正文将改为以数据前缀上传到 Amazon S3 存储桶中。可以使用 CloudWatch 日志见解查询数据,并可使用日志进一步实时传输到各种服务。 CloudWatch
使用 API 启用模型调用日志记录
可以使用以下 API 配置模型调用日志记录:
日志条目格式
每个调用日志条目都是一个 JSON 对象,其结构如下。 CloudWatch 日志和 Amazon S3 目标的格式相同。
{ "schemaType": "ModelInvocationLog", "schemaVersion": "1.0", "timestamp": "2024-01-15T12:00:00Z", "accountId": "123456789012", "region": "us-east-1", "requestId": "abcd1234-5678-efgh-ijkl-mnopqrstuvwx", "operation": "Converse", "modelId": "anthropic.claude-sonnet-4-20250514-v1:0", "identity": { "arn": "arn:aws:sts::123456789012:assumed-role/MyRole/session-name" }, "requestMetadata": { "team": "orchestrator", "environment": "production" }, "input": { "inputContentType": "application/json", "inputBodyJson": { }, "inputTokenCount": 25 }, "output": { "outputContentType": "application/json", "outputBodyJson": { }, "outputTokenCount": 150 } }
下表描述了日志条目中的字段:
| 字段 | 说明 |
|---|---|
schemaType |
日志记录的类型。始终为 ModelInvocationLog。 |
schemaVersion |
日志架构的版本。 |
timestamp |
调用的时间,采用 ISO 8601 格式。 |
accountId |
进行调用的 AWS 账户 ID。 |
region |
AWS 区域 进行调用的位置。 |
requestId |
请求的唯一标识符。 |
operation |
调用的 API 操作(例如Converse,InvokeModel)。 |
modelId |
用于调用的模型 ID 或推理配置文件 ID。 |
identity.arn |
提出请求的委托人的 AWS STS 或 IAM ARN,包括角色名称和会话或用户名。自动捕获。 |
requestMetadata |
调用者提供的键值标签的可选 JSON 对象。仅在调用者提供请求元数据时出现。有关更多信息,请参阅 Per-request 元数据标记。 |
input.inputBodyJson |
发送给模型的请求正文(最大 100 KB)。较大的主体作为单独的对象存储在 Amazon S3 中。 |
input.inputTokenCount |
请求中输入令牌的数量。 |
output.outputBodyJson |
模型的响应正文(最大 100 KB)。较大的主体作为单独的对象存储在 Amazon S3 中。 |
output.outputTokenCount |
响应中输出令牌的数量。 |
注意
记录中的每个字段都由 Amazon Bedrock 自动填充,但有一个例外:requestMetadata是调用者提供的唯一字段。有关更多信息,请参阅 Per-request 元数据标记。
要在不使用请求元数据的情况下细分 IAM 委托人对代币的使用情况,请分组identity.arn。以下 L CloudWatch ogs Insights 查询按呼叫者的输入令牌总数列出了呼叫者:
fields identity.arn as principal, input.inputTokenCount as inTokens, output.outputTokenCount as outTokens | stats sum(inTokens) as totalInput, sum(outTokens) as totalOutput, count() as calls by principal | sort totalInput desc
注意
日志条目中不包含二进制数据(例如图像)和大于 100 KB 的 JSON 正文。相反,它们作为单独的对象存储在数据前缀下的 Amazon S3 存储桶中,并且日志条目包含对 Amazon S3 位置的引用。