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

如何用Boto3获取EC2实例历史按需价格?及相关疑问咨询

AWS EC2按需价格历史获取与价格替代可行性分析

一、获取按需价格历史的可行方案

AWS没有像describe_spot_price_history那样直接返回按需价格历史的专用API,但有两种相对简便的实现方式:

1. 使用AWS Price List API

通过boto3调用该API可获取公开的定价变更记录,需自行解析时间范围筛选近3个月的数据:

import boto3
client = boto3.client('pricing', region_name='us-east-1')

response = client.get_products(
    ServiceCode='AmazonEC2',
    Filters=[
        {'Type': 'TERM_MATCH', 'Field': 'instanceType', 'Value': 'm4.large'},
        {'Type': 'TERM_MATCH', 'Field': 'operatingSystem', 'Value': 'Linux'},
        {'Type': 'TERM_MATCH', 'Field': 'tenancy', 'Value': 'VPC'},
        {'Type': 'TERM_MATCH', 'Field': 'preInstalledSw', 'Value': 'NA'},
        {'Type': 'TERM_MATCH', 'Field': 'capacitystatus', 'Value': 'Used'}
    ],
    FormatVersion='aws_v1'
)

返回结果包含定价生效时间,可据此提取目标时间范围内的历史价格。

2. 使用Cost Explorer API

若账号拥有Cost Explorer权限,可通过该API获取基于实际使用记录的历史支出,再结合使用量计算单位价格:

import boto3
client = boto3.client('ce', region_name='us-east-1')

response = client.get_cost_and_usage(
    TimePeriod={
        'Start': '2024-01-01',
        'End': '2024-04-01'
    },
    Granularity='MONTHLY',
    Metrics=['AmortizedCost'],
    GroupBy=[
        {'Type': 'DIMENSION', 'Key': 'INSTANCE_TYPE'},
        {'Type': 'DIMENSION', 'Key': 'OPERATING_SYSTEM'}
    ],
    Filter={
        'And': [
            {'Dimensions': {'Key': 'INSTANCE_TYPE', 'Values': ['m4.large']}},
            {'Dimensions': {'Key': 'OPERATING_SYSTEM', 'Values': ['Linux']}},
            {'Dimensions': {'Key': 'USAGE_TYPE_GROUP', 'Values': ['EC2-BoxUsage']}}
        ]
    }
)

二、用当前按需价格替代过去3个月价格的可行性

  • 价格稳定性:EC2按需价格波动极小,AWS仅会在推出新一代实例(如m5替代m4)或进行区域性调整时变更价格,这类操作频率极低,通常数月甚至一年才会发生一次。
  • 可行性判断:若目标实例类型(如m4.large)近3个月无官方价格调整,用当前价格替代历史价格完全可行,误差可忽略。若存疑,可先通过Price List API查询该实例的定价变更记录,确认期间是否有价格变动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:45:32