You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按单个Cognito用户维度统计AWS资源使用成本

按Cognito单个用户维度统计AWS资源成本的实现方案

你提到的身份池ABAC的Principal标签无法直接同步到账单成本分配标签,是因为AWS账单仅识别资源自身绑定的标签,不会继承调用者身份的标签,所以需要额外做一层统计映射。
以下方案适配你提到的S3存储、Lambda计算两类核心资源:

1 S3存储用户级成本统计

  • 路径隔离:每个Cognito用户分配唯一的S3前缀,统一使用userdata/${cognito_user_sub}/格式,注意:Cognito用户的sub属性是全局唯一且不可修改的,作为用户标识的稳定性远高于用户名、邮箱等可修改属性。通过IAM策略限制用户仅能读写自身前缀下的对象,避免跨用户数据混存。
  • 用量核算:每月定时触发任务,通过S3 Inventory功能或者ListObjectsV2接口,按用户前缀统计每个用户的总存储容量、对象数量,结合S3当前的存储单价核算存储成本;如果需要统计请求、流量成本,可开启S3访问日志,定期解析日志按前缀聚合请求次数、出站流量后核算对应成本。

2 Lambda计算用户级成本统计

  • 调用埋点:所有面向Cognito用户触发的Lambda函数,在代码执行开头从请求上下文(如API Gateway触发的场景可从requestContext.authorizer.claims.sub提取)获取用户sub标识,在函数执行日志中输出结构化日志,格式参考:user_sub=xxx, duration=xxx, memory=xxx, billed_duration=xxx。
  • 聚合统计:月度核算时通过CloudWatch Logs Insights筛选所有Lambda执行日志,按user_sub维度聚合总调用次数、总计费时长,结合Lambda的GB-秒计费规则(配置内存GB数 * 计费时长秒数 * 单价)计算每个用户的Lambda使用成本。
  • 可选优化:如果Lambda是用户专属实例,可在创建时直接绑定cognito_user_sub自定义标签,开启成本分配标签后可直接在账单控制台筛选对应成本,无需额外日志统计。

3 可扩展的通用映射规则

如果后续需要统计更多类型的AWS资源,可按以下规则统一处理:

  • 自定义一个全局统一的成本分配标签键,比如cognito_user_sub,在AWS Billing控制台的成本分配标签中激活该标签
  • 所有用户专属资源创建时直接绑定该标签,可直接在账单中按用户筛选统计
  • 所有多用户共享的资源,按用户实际使用量占比将成本分摊到对应用户即可

内容的提问来源于stack exchange,提问作者Matt Miller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:24:11