如何按实例类型和日期获取AWS EC2与Sagemaker实例的实际使用时长
AWS EC2与SageMaker实例使用时长获取方案
方案1:基于AWSCUR字段直接计算
AWSCUR没有直接的时长字段,但可通过自带的时间字段差值计算:
- 提取账单明细中的
line_item_usage_start_date和line_item_usage_end_date字段,两者的时间差即为单条明细对应的资源使用时长。 - 聚合逻辑:
- 先通过
product_product_name筛选出EC2、SageMaker的对应明细,过滤line_item_line_item_type非Usage的条目(排除税费、折扣、预付类费用项)。 - 按
product_instance_type(实例类型)、line_item_usage_start_date的日期维度分组,对每组的时间差求和即可得到对应维度的总使用时长。 - 如需时分秒精度,直接计算两个时间戳的差值即可,AWSCUR默认返回UTC时区时间,可根据业务需求转换时区。
- 先通过
方案2:结合CloudTrail事件获取精准启停时长
适合需要秒级精度的统计场景:
- EC2实例:筛选CloudTrail中
RunInstances、StopInstances、TerminateInstances事件,按实例ID匹配启停时间,计算单实例单次运行的时长后按实例类型、日期聚合。 - SageMaker实例:根据资源类型筛选对应启停事件,比如Notebook实例对应
CreateNotebookInstance/StartNotebookInstance/StopNotebookInstance/DeleteNotebookInstance,训练任务对应CreateTrainingJob/StopTrainingJob,同理计算运行时长后聚合。
方案3:通过Cost Explorer API直接获取聚合结果
无需处理明细数据的简化方案:
- 调用Cost Explorer的
get_cost_and_usage接口,指定维度为SERVICE、INSTANCE_TYPE、USAGE_DATE,选择UsageQuantity作为返回指标,返回值即为对应维度的使用时长,单位为小时,可直接使用。
内容的提问来源于stack exchange,提问作者fish
相关产品推荐
相关产品推荐

