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

如何使用Python调用AWS CostExplorer API查询指定标签对应的成本

AWS CostExplorer API返回费用为0的排查方案
  • 指标选择错误:你当前请求的Metrics参数取值为NormalizedUsageAmount,该指标代表标准化资源使用量,不是实际消费金额。如果需要查询账单费用,应该替换为UnblendedCost(标准未摊销成本,适合常规按实际出账金额核算的场景)或者AmortizedCost(摊销成本,适合包含预留实例、Savings Plans分摊的场景)。
  • 成本分配标签未激活:AWS默认不会自动将资源标签同步到Cost Explorer的成本统计维度,你需要手动完成以下配置:
    1. 登录AWS控制台,进入「Billing and Cost Management」页面
    2. 左侧菜单选择「成本分配标签」
    3. 在用户定义的成本分配标签列表中找到client_id,勾选后点击激活

    注意:标签激活前产生的历史费用不会自动关联该标签,无法通过标签过滤查询到,只有激活后新产生的费用才会携带标签信息。

  • 部分产品标签同步配置缺失:你用到的LightSail产品默认不会自动同步资源标签到Cost Explorer,需要单独在LightSail控制台开启标签成本分配功能,才能让LightSail的费用和自定义标签关联。
  • 组织账户权限配置问题:如果你使用的是AWS Organizations的成员账户,需要确认主账户已经开启了成本数据共享权限,允许成员账户访问Cost Explorer的费用明细。
  • 代码语法瑕疵:你贴出的代码中aws_secret_access_key = os.getenv('aws_secret_access_key') or末尾多余的or可能会导致变量赋值错误,建议先修正该语法问题再测试。

修正后参考代码

import os
import json
import boto3

region_name = os.getenv('region_name')
aws_access_key_id = os.getenv('aws_access_key_id')
aws_secret_access_key = os.getenv('aws_secret_access_key')

client = boto3.client('ce',
                      region_name=region_name,
                      aws_access_key_id=aws_access_key_id,
                      aws_secret_access_key=aws_secret_access_key)

response = client.get_cost_and_usage(
    TimePeriod={
        'Start': '2021-01-01',
        'End': '2021-10-22'
    },
    Filter={
        'Tags': {
            'Key': 'client_id',
            'Values': ['1234567890'],
            'MatchOptions': ['EQUALS']
        }
    },
    Granularity='MONTHLY',
    Metrics=[
        'UnblendedCost',
    ]
)

print(json.dumps(response, indent=4, sort_keys=True))

内容的提问来源于stack exchange,提问作者Johnny John Boy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:27:01