查华为云账单踩了四个坑,441 条明细全是 0 元

举报
yd_231995061 发表于 2026/11/07 00:50:45 2026/11/07
【摘要】 想搞清楚云上到底花了多少钱,一路踩坑:BSS 接口的 region 只能传一个固定值、账单明细 441 条金额全是 0、代金券 status=3 不代表可用、账号名和 IAM 用户名是两套标识。每个坑都写了判据和命令。

想查账,先装 CLI

云上跑着一台轻量服务器,想知道这个月花了多少。控制台的费用中心能看,但要一条条翻,不如直接查接口。华为云的命令行工具叫 KooCLI,装在 Windows 上就是一个 hcloud.exe。

hcloud version
# 当前KooCLI版本:7.3.12

hcloud configure list
# 能看到 default profile 和脱敏后的 AK

凭据用 AK/SK,配好之后所有命令都能直接跑。

坑一:BSS 的 region 只能传 cn-north-1

第一反应是带上自己资源所在的区域,因为平时查 ECS、EIP 都是这么干的:

hcloud BSS ListSubCustomerCoupons --cli-region=ap-southeast-3
# [USE_ERROR]cli-region的值不支持,当前支持的区域值如下:
# cn-north-1

报错很干脆。原因不难理解:账单是全局服务,不属于任何一个区域,所以只认一个固定的入口区域。但这里有个容易走偏的地方——其他地方查资源的命令是区分区域的,习惯了之后会本能地带上本地区域,然后在这条命令上反复试不同区域,试十次都报同样的错。

判据:报错里明确列出了支持的区域清单,只有一个值。以后再见到这种"只支持一个 region"的命令,就不要在区域上折腾了。

坑二:441 条明细,金额全是 0

换成正确的区域,拉这个月的账单明细:

hcloud BSS ListCustomerBillsFeeRecords --bill_cycle=2026-11 --cli-region=cn-north-1 --cli-output=json --limit=1000 --offset=0

返回 total_count 是 441。第一眼看到这个数字心里一紧,以为花了不少钱。逐条看下去发现:

consume_amount: 0.0
official_amount: 0.0
coupon_amount: 0.0
cash_amount: 0.0

441 条全部是 0。为什么会有 441 条记录?因为按需计费的资源是按小时出明细的,一台机器跑一个月就是 700 多条,每台机器、每项资源各算一组。记录条数反映的是"计费了多久",不是"花了多少钱"。

按区域分组看了一下,分布是这样的:

华北-北京四   201条  消费 0
亚太-新加坡   120条  消费 0
中国-香港     120条  消费 0

再按服务类型拆开,才看清都是什么:

亚太-新加坡  → 密码安全中心,用户主密钥资源(120 条)
中国-香港    → 虚拟私有云,固定带宽(120 条)

判据:判断"这个月花没花钱",看的是每条的 consume_amount 是否为 0,不是看返回了多少条。条数是计费频次的产物。

坑三:代金券 status=3 不是"可用"

账户里有一张体验代金券,想看还能不能用。接口返回的关键字段:

face_value: 200.0
balance: 0.0
status: 3

光看 face_value(面值 200)很容易以为还有 200 元没用。实际 balance 是 0,status 是 3,意思是已使用。

这几个字段的关系要记牢:

  • face_value 是这张券当初多少钱,永不变化
  • balance 是现在还剩多少,这才是能用的额度
  • status 是状态码,1 可用、3 已使用

判据:一张券能不能用,看 status == 1 并且 balance > 0,两个条件都要满足。只看面值会得出完全相反的结论。

坑四:账号名和 IAM 用户名不是一回事

账单里每条的 account_name 是一个形如 hw017183852 的字符串,但平时登录控制台、看社区昵称用的是另一套名字,比如 hw_008619165835192_01。两者不一样,一开始以为是查错了账号。

想确认手里这对 AK 到底属于谁,不要猜,直接查 IAM:

hcloud IAM KeystoneListUsers --cli-region=cn-north-1 --cli-output=json

返回里 users[].name 就是账号名,domain_id 是账号的唯一标识。这条命令是判断凭据归属最快的方法,比你翻控制台快得多。

顺带一个教训:本机配了好几对 AK,有的是主账号的,有的是另一个账号的。用错凭据查出来的余额和账单,数字看着是真的,但说的不是同一个账号的事。

查账的正确顺序

# 1. 先看余额和欠费
hcloud BSS ShowCustomerAccountBalances --cli-region=cn-north-1 --cli-output=json

# 2. 确认手里凭据是谁的
hcloud IAM KeystoneListUsers --cli-region=cn-north-1 --cli-output=json

# 3. 再看某个月的钱花在哪
hcloud BSS ListCustomerBillsFeeRecords --bill_cycle=2026-11   --cli-region=cn-north-1 --cli-output=json --limit=1000 --offset=0

# 4. 有券的话确认还能不能用
hcloud BSS ListSubCustomerCoupons --cli-region=cn-north-1 --cli-output=json

余额返回里 debt_amount 是欠费,account_balances[].amount 是各账户余额。欠费为 0 就说明没有逾期。

最后两句

这几个坑有共同点:命令都不报错,返回的也都是合法数据,只是数字的含义和直觉不一样。441 条不是花了多少钱,200 的面值不是还能用 200,账号名对不上不代表查错了。

所以查账的时候,先想清楚"我要回答的是哪个问题",再去挑字段。字段名看着对,含义可能差很远。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。