用 CloudTrail 追踪 Amazon Bedrock API 调用:配置、查询与告警完整指南

概述

在 EC2 上运行 AI Agent 调用 Amazon Bedrock 时,CloudTrail 可以记录每一次 API 调用的详细信息:调用者身份、时间、来源 IP、调用的模型等。

但 Bedrock 的 InvokeModel 属于数据事件(Data Events),默认不记录,需要手动配置。

配置步骤

1. 创建 Trail(如果还没有)

aws cloudtrail create-trail \
  --name bedrock-audit-trail \
  --s3-bucket-name my-cloudtrail-logs \
  --is-multi-region-trail \
  --enable-log-file-validation

aws cloudtrail start-logging --name bedrock-audit-trail

2. 启用 Bedrock 数据事件

aws cloudtrail put-event-selectors \
  --trail-name bedrock-audit-trail \
  --advanced-event-selectors '[{
    "Name": "Bedrock InvokeModel events",
    "FieldSelectors": [
      {"Field": "eventCategory", "Equals": ["Data"]},
      {"Field": "resources.type", "Equals": ["AWS::Bedrock::Model"]}
    ]
  }]'

3. 同步到 CloudWatch Logs(推荐)

方便实时查询和设置告警。

日志内容

一条 InvokeModel 日志包含:

  • userIdentity:调用者 IAM Role/User
  • sourceIPAddress:来源 IP
  • requestParameters.modelId:调用的模型
  • eventTime:调用时间

CloudWatch Logs Insights 查询

按小时统计调用量:

filter eventSource = "bedrock.amazonaws.com" and eventName = "InvokeModel"
| stats count() by bin(1h)

按模型统计:

filter eventSource = "bedrock.amazonaws.com"
| stats count() as cnt by requestParameters.modelId
| sort cnt desc

异常时段调用:

filter eventSource = "bedrock.amazonaws.com"
| filter datepart(@timestamp, "hour") < 6 or datepart(@timestamp, "hour") > 22

告警设置

通过 CloudWatch Metric Filter 统计调用次数,Alarm 超阈值触发 SNS 通知。

日志保留与成本

存储 成本 用途
S3 标准 ~$0.023/GB/月 长期合规存档
S3 Glacier ~$0.004/GB/月 90天后自动转储
CloudWatch Logs ~$0.50/GB 摄入 实时查询(保留 30-90 天)

在亚马逊云科技上验证。

posted @ 2026-03-27 06:31  亚马逊云开发者  阅读(2)  评论(0)    收藏  举报