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

如何查询指定时间段内Spot Instances的实例总数量

统计特定时间段Spot Instance总数的实现方法

你可以基于现有get_cost_and_usage接口的调用逻辑调整参数实现,先注意你现有代码存在一个bug:Filter字典里写了两个重复的Dimensions键,后面的REGION过滤条件会直接覆盖前面的PURCHASE_TYPE过滤,实际不会生效,需要先修正这个问题。

场景1:统计时间段内Spot实例的运行总数量(按使用量折算)

如果是要统计类似整月的Spot实例运行总时长折算的实例数,直接调整get_cost_and_usage的参数即可:

  • 把Metrics参数替换为['UsageQuantity'],这个指标会返回对应资源的使用量统计
  • 用And运算符包裹多个过滤维度,避免重复键覆盖的问题
  • 按需调整时间粒度,统计整月数据可以把Granularity设为MONTHLY减少返回结果量

修改后的代码示例:

data = self.ce_client.get_cost_and_usage(
    TimePeriod={'Start': start, 'End': end},
    Granularity='MONTHLY', # 统计整月可以用月度粒度,按天统计保留DAILY即可
    Metrics=['UsageQuantity'],
    Filter={
        'And': [
            {
                'Dimensions': {
                    'Key': 'PURCHASE_TYPE',
                    'Values': [
                        'Spot Instances',
                    ],
                    'MatchOptions': [
                        'EQUALS',
                    ]
                }
            },
            {
                'Dimensions': {
                    'Key': 'REGION',
                    'Values': args.region,
                    'MatchOptions': [
                        'EQUALS',
                    ]
                }
            }
        ]
    },
    GroupBy=[
        {
            'Type': 'DIMENSION',
            'Key': 'PURCHASE_TYPE'
        },
    ],
    **kwargs
)

返回结果中,PURCHASE_TYPE为Spot Instances对应的UsageQuantity数值就是该时间段内的Spot实例总运行时长,除以你统计的时间段总小时数,就能得到该时间段内的平均运行实例数。

场景2:统计时间段内所有创建过的Spot实例去重总数

如果是要统计期间所有存在过的Spot实例(不管运行时长,只要在时间段内启动过/运行过就算),需要调用EC2的describe_instances接口实现:

  • 过滤InstanceLifecycle为spot的实例
  • 添加时间过滤条件,筛选实例启动时间在你指定的时间段范围内,或者终止时间(如果实例已终止)在时间段范围内
  • 最后对返回的实例ID去重计数即可

内容的提问来源于stack exchange,提问作者Arun Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:42:03