用 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/UsersourceIPAddress:来源 IPrequestParameters.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 天) |
在亚马逊云科技上验证。

浙公网安备 33010602011771号