查华为云账单踩了四个坑,441 条明细全是 0 元
想查账,先装 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,账号名对不上不代表查错了。
所以查账的时候,先想清楚"我要回答的是哪个问题",再去挑字段。字段名看着对,含义可能差很远。
- 点赞
- 收藏
- 关注作者
评论(0)