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

使用Boto3/AWS CLI按标签获取用户用量数据遇超时及无输出问题

问题排查步骤

1. 修正CLI命令的Filter格式

你的CLI命令中--filter参数格式错误,Cost Explorer的CLI过滤器必须使用JSON结构,而非键值对拼接。正确命令如下:

aws ce get-cost-and-usage \
    --time-period Start=2023-05-01,End=2023-06-01 \
    --granularity MONTHLY \
    --metrics "BlendedCost" \
    --filter '{"Tags": {"Key": "User", "Values": ["sample"], "MatchOptions": ["EQUALS"]}}'

错误的格式会导致CLI无法正确解析请求,进而出现卡顿超时。

2. 完善Boto3的Filter配置

虽然你的Boto3代码无报错,但建议显式补充MatchOptions字段(默认值为EQUALS,显式声明可避免潜在解析问题),修正后的Filter结构:

tag_filter = {
    'Tags': {
        'Key': 'User',
        'Values': ['sample'],
        'MatchOptions': ['EQUALS']
    }
}

3. 验证成本分配标签配置

Cost Explorer不会自动同步所有资源标签,必须在AWS Billing控制台开启对应标签的成本分配:

  • 登录AWS Billing控制台,进入「成本分配标签」页面
  • 找到User标签,勾选并保存变更
  • 等待24-48小时让AWS完成标签数据同步
    未开启此配置时,即使资源带有标签,Cost Explorer也无法返回对应结果。

4. 检查IAM权限配置

确保执行脚本/CLI的IAM实体(用户/角色)拥有以下权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ce:GetCostAndUsage",
            "Resource": "*"
        }
    ]
}

权限不足可能导致Boto3无输出(静默处理)或CLI请求超时(权限被拒但未正确提示)。

5. 确认标签关联资源与时间范围

  • 核实存在带有User=sample标签的AWS资源,且这些资源在指定时间范围内有实际费用产生
  • 检查时间范围合法性:End日期必须晚于Start日期,历史数据需确保已完成账单结算

6. 测试无过滤的基础请求

先执行不带标签过滤的请求,验证Cost Explorer服务是否正常响应:

Boto3测试代码

response = ce_client.get_cost_and_usage(
    TimePeriod={'Start': '2023-05-01', 'End': '2023-06-01'},
    Granularity='MONTHLY',
    Metrics=['BlendedCost']
)
print(response)

CLI测试命令

aws ce get-cost-and-usage \
    --time-period Start=2023-05-01,End=2023-06-01 \
    --granularity MONTHLY \
    --metrics "BlendedCost"

如果基础请求正常返回数据,说明问题出在标签过滤或标签配置环节;如果仍然无输出/超时,需检查网络连接、AWS区域配置(Cost Explorer为全局服务,客户端需使用us-east-1或正确的全局端点)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:12:29