AWS发布Bedrock调用日志数据湖方案,跨账户汇总提示词与token用量
AWS博客介绍一套基于CloudFormation的示例方案,将各账户的Amazon Bedrock模型调用日志汇聚到中心账户,经Lambda清洗、Firehose转Parquet后由Athena查询;可查看每次调用的提示词、响应、token数和模型,并可与成本与用量报告(CUR)关联。
AI解读:AWS机器学习博客发布一套Amazon Bedrock调用可观测性数据湖示例方案,代码与模板托管在GitHub仓库。
方案要解决的问题是:原生日志按账户隔离,看得到汇总账单,但看不到单次调用的提示词、token数和模型选择。
架构分五步:Bedrock写调用日志到CloudWatch、订阅过滤器转发到中心账户、Lambda解包清洗、Firehose转Parquet写入S3、Athena建表查询。
每条记录包含提示词、响应、输入输出token数、模型、停止原因、账户、时间戳和IAM角色。
部署需先建中心账户栈再部署各源账户栈,且Bedrock调用日志属于账户级设置,需在每个源账户手动开启。
博客称可将处理后表按IAM ARN与CUR 2.0关联,得出按团队或账户的每次调用成本;此能力由AWS描述,未见第三方效果数据。
AWS机器学习博客发布一套Amazon Bedrock调用日志数据湖示例方案,用于把多个账户的模型调用日志汇总到单个中心账户,并通过Athena用SQL查询每次调用的提示词、响应、token数、模型和调用者身份。博客称,该方案已提供CloudFormation模板、Lambda代码和SQL查询,存放在AWS示例仓库中。
方案填补的可见性缺口
Amazon Bedrock本身提供模型调用日志,可将请求和响应完整记录投递到Amazon S3或CloudWatch。博客指出,这些数据被锁在各个账户内,运行数千次调用时,平台或ML工程师只能看到汇总账单,无法判断某次调用用了什么提示词、消耗多少token、由哪个模型处理。
该方案将这些日志集中到一个可快速查询的视图,同时保留按账户归属的能力。
- 原生日志开关在Bedrock设置中按账户开启
- 方案面向跨团队、跨账户管理Bedrock工作负载的平台或ML工程师
五段式处理流程
日志依次经过五个阶段。Bedrock将调用日志写入CloudWatch日志组;各源账户上的订阅过滤器把新事件转发到中心账户的CloudWatch Logs目标;一个Lambda函数解包压缩批次、剔除权限提示等非调用数据,并把嵌套的调用者身份字段提升到顶层;Amazon Data Firehose将JSON转为Parquet,按日期路径写入S3;最后由AWS Glue表支撑Athena查询。
整套基础设施用两个CloudFormation模板部署,分别对应中心账户和源账户。
- 每条记录字段:提示词、模型响应、输入与输出token数、模型、停止原因(如max_tokens)、账户、时间戳、IAM角色
- 停止原因可用于发现被截断的响应
- Firehose缓冲刷新约需一分钟,有时更久
部署顺序与前提条件
博客强调部署顺序:先部署中心账户栈,取得CloudWatch Logs目标ARN和QuickSight角色ARN;再在每个运行Bedrock的源账户部署较小的日志栈,输入该目标ARN;随后在每个源账户手动开启Bedrock模型调用日志,并选择仅投递到CloudWatch。
博客说明,部署栈本身不会启动日志记录,因为Bedrock日志是账户级设置,不是CloudFormation资源。之后运行一次测试调用,确认Parquet文件出现在S3的data/前缀下,再执行中心栈保存的Athena命名查询以创建扁平化视图。
- 前提:配置各账户凭证的AWS CLI、CAPABILITY_IAM与CAPABILITY_NAMED_IAM权限、至少一个链接账户和一个中心账户(可为同一账户)、Python 3与Boto3、已克隆仓库
成本归因与治理边界
博客称,将处理后的表按IAM ARN与AWS成本与用量报告CUR 2.0关联,可得到每次提示词的成本、按天按团队或账户的支出,以及低效调用的实际花费。博客还提供QuickSight仪表板,可通过cid-cmd deploy命令部署,并允许加入团队等组织元数据。
治理方面,集中存放完整提示词和响应的S3桶默认启用AWS KMS服务端加密,桶和Athena查询结果的访问由IAM策略控制。博客提醒提示词可能含个人身份信息,建议审查IAM与桶策略,确认只有授权主体可访问。
博客将“tokenomics”称为 2026 年FinOps Foundation会议上宣布的正式FinOps领域,并称该方案提供按调用查看token和成本的基础。这一表述来自AWS博客,方案的实际效果未附公开评测数据。
- 清理时需先清空S3桶再删除CloudFormation模板,Athena工作组需手动删除
- 博客建议先从一两个链接账户开始,再扩展到整个组织