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

咨询:如何获取AWS 6个月成本使用数据中的缺失字段?

解决方案

1. 优化get_cost_and_usage API调用参数

虽然get_cost_and_usage默认返回字段有限,但可通过指定**分组维度(GroupBy)和附加指标(Metrics)**获取更多所需字段:

  • UsageAccountId:通过分组维度LINKED_ACCOUNT获取
  • ProductCode:通过分组维度PRODUCT_CODE获取
  • SKU:通过分组维度SKU获取
  • BundledDiscount:需在Metrics中指定BUNDLED_DISCOUNT(注意部分服务可能不支持该指标)
  • Unit:可通过分组维度USAGE_TYPE关联解析

示例boto3调用代码:

import boto3

client = boto3.client('ce')

response = client.get_cost_and_usage(
    TimePeriod={
        'Start': '2024-01-01',
        'End': '2024-07-01'
    },
    Granularity='DAILY',
    Metrics=['BlendedCost', 'UnblendedCost', 'BundledDiscount'],
    GroupBy=[
        {'Type': 'DIMENSION', 'Key': 'LINKED_ACCOUNT'},
        {'Type': 'DIMENSION', 'Key': 'PRODUCT_CODE'},
        {'Type': 'DIMENSION', 'Key': 'SKU'},
        {'Type': 'DIMENSION', 'Key': 'SERVICE'},
        {'Type': 'DIMENSION', 'Key': 'LOCATION'},
        {'Type': 'DIMENSION', 'Key': 'USAGE_TYPE'}
    ]
)

注意:ResourceId无法通过get_cost_and_usage直接获取,该字段仅在GetCostAndUsageWithResources或Cost and Usage Reports(CUR)中提供。

2. 使用Cost and Usage Reports(CUR)+ Athena 查询(推荐)

这是获取全量成本数据(含所有所需字段)最可靠的方式,支持长期历史数据查询:

  1. 创建CUR报告:在AWS控制台Cost Management模块中创建CUR,选择包含全量资源维度的报告格式(推荐Parquet,查询效率更高),设置定期将报告推送到指定S3存储桶。
  2. 配置Athena表:使用AWS提供的自动脚本或手动在Athena中创建指向S3 CUR文件的外部表,表结构会包含你需要的所有字段(UsageAccountId, ResourceId, ProductName等)。
  3. 编写SQL查询:直接在Athena中执行SQL获取6个月历史数据,示例查询:
SELECT
  line_item_usage_account_id AS UsageAccountId,
  line_item_blended_cost AS BlendedCost,
  line_item_unblended_cost AS UnblendedCost,
  line_item_usage_start_date AS UsageStartDate,
  discount_bundled_discount AS BundledDiscount,
  product_product_code AS ProductCode,
  product_product_name AS ProductName,
  line_item_resource_id AS ResourceId,
  product_service AS Servicename,
  product_sku AS SKU,
  line_item_unit AS Unit,
  product_location AS Location
FROM
  "cur_db"."cur_table"
WHERE
  line_item_usage_start_date >= DATE '2024-01-01'
  AND line_item_usage_start_date < DATE '2024-07-01'
GROUP BY
  line_item_usage_account_id,
  line_item_blended_cost,
  line_item_unblended_cost,
  line_item_usage_start_date,
  discount_bundled_discount,
  product_product_code,
  product_product_name,
  line_item_resource_id,
  product_service,
  product_sku,
  line_item_unit,
  product_location

这种方式不仅能获取所有所需字段,还支持复杂的过滤、聚合操作,适配长期数据需求。

3. 组合API调用(折中方案)

若不想依赖CUR,可结合get_cost_and_usage与其他AWS API补充缺失字段:

  • 对于ResourceId:先通过get_cost_and_usage获取SKU、ProductCode等信息,再调用对应服务的资源查询API(如EC2的describe_instances),通过标签或属性关联资源ID。但此方式仅适用于特定服务,维护成本较高。
总结

若需全量字段+长期历史数据,CUR + Athena为最优选择;若仅需补充部分字段且数据量不大,可优化get_cost_and_usage参数;组合API调用仅适合特定场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 04:35:54