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

如何使用boto3查询VPC中单价最贵的前X台含EBS费用的EC2实例

实现方案

方案1:直接调用Cost Explorer API(最省力,推荐)

无需自己关联EC2、EBS、定价数据,AWS侧已经完成了资源维度的成本关联

  • 调用boto3的ce客户端的get_cost_and_usage_with_resources接口,直接按实例维度聚合当前小时的未分摊成本,返回结果已经包含EC2实例本身的计算费用 + 挂载的所有EBS卷的费用
  • 核心参数配置:
    • 时间范围选当前小时的起始到当前时间
    • Granularity设为HOURLY
    • Filter限定资源类型为AWS::EC2::Instance
    • Metrics选UnblendedCost
    • SortBy按UnblendedCost降序排列,MaxResults直接设为你需要的X,返回结果就是单价最高的前X台实例
  • 前置要求:提前开启Cost Explorer的资源级粒度监控,数据延迟约15分钟,符合绝大多数近实时场景需求

方案2:本地缓存预计算(请求延迟最低,适合高频率调用)

完全避免Web请求时调用AWS接口,接口开销降到最低

  • 后台跑定时同步任务(建议15~30分钟一次),全量拉取当前EC2实例、挂载EBS卷的配置信息,预计算每台实例的小时单价存入Redis/关系型数据库
  • 优化增量同步:监听CloudTrail的EC2/EBS配置变更事件(实例创建/销毁、卷挂载/卸载、卷规格调整等),触发对应实例的成本重算,无需每次全量拉取所有资源
  • 定价数据本地缓存:AWS产品定价数月才会更新,可提前把所有EC2实例规格、EBS类型的单价预存在本地,无需每次请求调用Pricing API,计算完全本地化

注意事项

  • 计算单价时需要覆盖所有成本项:EC2的付费模式(按需/预留/Spot)单价差异、EBS的存储容量费用、io1/io2/gp3的额外IOPS/吞吐量费用都需要纳入计算
  • 如果是多账户场景,需要在Cost Explorer中开启合并账单的资源级权限,才能拉取所有关联账户的实例成本数据

内容的提问来源于stack exchange,提问作者Michael Robinson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:48:03