先把当时的情况摆出来。Bedrock 开了 cross-region inference,在 us-east-1 调 us.anthropic.claude-3-5-sonnet,请求被路由到 us-west-2 执行,账单里同一个模型出现两个区的单价。
排查方向其实有限,先把可能性排一排。跨区推理按实际执行区域计价。还有一种是inference profile 的 id 决定了可路由的区域范围。
另外,跨区数据传输单独计费。少数情况下是各区的折扣和汇率不同,混在一起看像算错。
从响应头确认实际执行区域
aws bedrock-runtime invoke-model --model-id us.anthropic.claude-3-5-sonnet-20241022-v2:0 --body fileb://req.json out.json
接着按区域拆分 Cost Explorer 的用量
aws ce get-cost-and-usage --time-period Start=2026-11-01,End=2026-11-13 --granularity DAILY --metrics BlendedCost
随后改用单区 profile 观察价格变化
aws bedrock list-inference-profiles --region us-east-1
剩下的就是把执行区域写进请求日志便于对账
python -c "print('log region from response metadata')"
同一份数据我导出了两份,一份留底,一份拿来试。
恢复的判定其实很直接。切到单区 profile 后,账单里只出现 us-east-1 的单价,同样的调用量费用下降 4%,日志里的 region 字段与账单一致。
这里还有个坑。跨区推理换的是可用性和配额,不是价格优势,容量规划时要把执行区的单价一起算进去。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
