全景路径

AWS Bedrock IAM花费追踪与预算控制

Get per-identity Amazon Bedrock cost visibility and enforceable spend limits using only AWS-native features, with no application code for the common case. Attribute spend with IAM

All guides · Full article is primarily Simplified Chinese; use the English summary below for quick takeaways (GEO-friendly).

AWS Bedrock IAM花费追踪与预算控制

你需要为AWS Bedrock上的AI模型调用设置按IAM主体(用户或角色)的花费可见度和可强制执行的预算上限吗?这个方法全部使用AWS原生功能,在常见情况下无需编写任何应用代码。CIO和CTO可以清晰了解每个团队或个人的消耗,并通过AWS Budgets自动限制支出,避免超支或意外费用。适用于需要精细控制生成式AI预算的组织,特别是已有IAM角色或会话的场景。

为什么选择AWS Bedrock IAM花费追踪

AWS Bedrock在2026年支持Claude、Llama等主流模型,其计费按输入输出Token以$/M为单位。IAM Principal Attribution功能会自动将每次推理请求的调用者身份记录下来。结合CUR 2.0数据导出和AWS Budgets,你就能实现按身份的成本可见度,并设置强制执行的预算上限。

这个方案的优势在于:

  • 零代码部署:无需自定义Lambda或Athena查询即可实现基础可见度。
  • 可扩展性:支持团队共享角色或按用户区分的场景。
  • 合规友好:内置的Deny策略能直接限制权限。

核心组成部分

  • IAM Principal Attribution:Amazon Bedrock自动记录IAM用户或角色的身份,无需修改API调用。
  • Cost Allocation Tags:将身份标签激活为成本分配标签,数据可通过AWS Cost Explorer或CUR 2.0导出。
  • CUR 2.0数据导出:包含IAM Principal分配数据,支持SQL查询和详细行项目分析。
  • AWS Budgets:创建按服务、身份或标签过滤的预算,并在阈值超过时自动附加Deny IAM策略。

实施步骤

准备工作

确保AWS账户已启用Amazon Bedrock访问权限,IAM权限包括标记主体、激活标签、创建数据导出和预算。AWS CLI已配置。

步骤1:决定身份映射方式

根据你的组织IAM组织方式选择标签类型。

每个角色对应一人或一个应用:直接在IAM角色上附加静态Principal Tags。示例命令(AWS CLI):


aws iam tag-role \

 --role-name BedrockDeveloperRole-alice \

 --tags Key=user,Value=alice@example.com Key=team,Value=platform Key=CostCenter,Value=CC-1001

共享角色或网关场景:使用动态Session Tags。角色信任策略需允许sts:TagSession。Session Tags可通过sts:AssumeRole或OIDC/SAML传递。常见标签键包括user、team、Department、CostCenter和Environment。

对比表

场景类型 标签类型 优势 适用场景 注意事项
1对1角色 Principal Tags 静态,每请求固定 每个用户独立角色 标签最多50个
共享角色/网关 Session Tags 动态,可区分用户 多人共用角色或API网关 需配置sts:TagSession
多团队共享 Principal + Session 灵活区分 跨团队协作 共享角色会影响整体控制

步骤2:激活成本分配标签

1. 打开AWS Billing and Cost Management控制台。

2. 选择Cost allocation tags。

3. 筛选类型为IAM principal。

4. 选中你的标签键并激活。

激活后,最多24小时内标签出现在账单数据中。新标签需在应用前激活,否则不会反映。

步骤3:创建CUR 2.0数据导出

如果只需要Console路径,可跳过此步。

1. 在Billing控制台选择Data Exports > Create。

2. 选择CUR 2.0(Standard)导出。

3. 在Additional export content中选中Include caller identity (IAM principal) allocation data。

4. 时间粒度选Hourly,报告数据集成选Amazon Athena。

5. 指定S3桶,运行提供的Setup Script创建Glue表。

新导出会包含iamPrincipal/前缀的列(如iamPrincipal/team),旧导出需重新创建才能包含身份数据。

步骤4:读取数据

Console路径:Cost Explorer筛选Service为Amazon Bedrock,按标签键分组查看团队或用户花费图表和表格。适用于日常监控,无需查询。

SQL路径(低代码):使用Amazon Athena查询CUR 2.0导出。


SELECT

 tags['iamPrincipal/team'] AS team,

 line_item_usage_type,

 SUM(line_item_unblended_cost) AS cost

FROM cur2_view

WHERE product_servicecode IN ('AmazonBedrock', 'AmazonBedrockService')

AND billing_period = '2026-09'

GROUP BY 1, 2

ORDER BY 3 DESC

注意事项:

  • 服务代码包含AmazonBedrock和AmazonBedrockService。
  • 汇总所有Token类型(输入、输出、缓存读/写),仅统计输入输出会遗漏缓存节省。
  • 匹配行项目类型和地域定价。

更多细节参考官方CUR计费文档。

步骤5:添加AWS Budgets强制执行

1. 在Billing控制台创建AWS Budgets。

2. 选择Amazon Bedrock服务,按身份或标签过滤(例如user=alice@example.com)。

3. 设置预算阈值和通知。

4. 添加Budget Action:选择Apply IAM policy,附加Deny策略(限制Bedrock访问)。

当花费超过阈值时,策略自动生效,自动阻止超出预算的请求。共享角色时会影响所有用户。

风险与边界

此方法依赖AWS原生功能,易于维护,但共享IAM角色会影响多人预算控制的精确度。激活标签后可能有延迟,建议先测试。数据仅反映账单层面,无法替代运行时监控。非法律意见,仅供参考。所有实施以AWS官方文档和2026年11月12日当日数据为准。实际消耗可能因模型、区域和Token类型而异。

延伸阅读