Huawei Cloud KooCLI:固定认证模式、region 与 project_id
KooCLI 的 cli-profile 保存一组认证与公共参数,cli-mode 决定使用 AKSK、ECS 委托、SSO 或 AssumeRole 等路径,cli-region 与 cli-project-id 决定区域级资源落点。脚本必须把这四个对象同时钉住。
cli-profile 保存配置,cli-mode 选择认证路径
多个账号、区域或项目应使用独立 profile。官方配置文档列出 AKSK、ecsAgency、SSO 与 AssumeRole 等认证模式;不同模式需要不同参数和退出动作。永久 AK/SK 只作为受控例外,云上工作负载优先使用委托,人员优先使用身份中心或组织批准的短期入口。
hcloud version
hcloud configure list
hcloud configure show --cli-profile=dev-readonly配置展示不能证明凭据有效,也不能证明调用落点。下一步用只读 API 返回项目、资源和请求元数据,校验 profile 中 region、project_id 与 domain/account 归属。
安装后先隔离 profile 与本机凭据
二进制来源、版本和校验值进入工具清单。配置命令可能把 AK/SK 写入本机 profile,不能在共享终端、录屏或命令参数中明文输入。实验使用独立用户或受控临时目录,第一次调用应证明没有借用默认 profile。
hcloud configure set \
--cli-profile=dev-readonly \
--cli-mode=SSO \
--cli-region=cn-north-4 \
--cli-sso-region=cn-north-4 \
--cli-sso-start-url="$HWCLOUD_SSO_START_URL"具体 SSO 参数以组织与当前 KooCLI 文档为准。ECS 环境使用 ecsAgency 时,先检查实例委托范围和元数据访问边界;AssumeRole 则同时验证 source profile、委托名称与目标账号。
region 与 project_id 共同定位区域级资源
华为云中 domain/account 与 project 是不同层级,区域级 API 常需要 project_id。只固定 region 仍可能使用错误项目,只复制 project_id 又可能与 endpoint 不匹配。命令显式传 --cli-profile、--cli-region 和必要的 project_id。
hcloud ECS NovaListServers \
--cli-profile=dev-readonly \
--cli-region=cn-north-4 \
--project_id="$EXPECTED_PROJECT_ID" \
--cli-output=json响应保存资源 ID、状态和 request id。项目 ID、资源名和 endpoint 都可能出现在日志中,应按内部资产信息控制访问。
正反实验区分认证、授权与参数错误
正向实验查询一个开发资源集合,反向实验调用未授权写动作或传入错误 project_id。认证失败、IAM 拒绝、endpoint/region 错误、project 不匹配和资源不存在分别保留原始错误码,不能统一归类为“无权限”。
hcloud ECS NovaDeleteServer \
--cli-profile=dev-readonly \
--cli-region=cn-north-4 \
--project_id="$EXPECTED_PROJECT_ID" \
--server_id=negative-canary负向对象位于隔离项目且默认不存在,确保测试不会删除真实服务器。若权限传播延迟,先确认 token 刷新、profile 和 project,再联系 IAM owner,不把 dev-readonly 直接升级为管理员。
输出、重试与自定义参数必须审查
cli-output=json 适合脚本,cli-query 可筛选响应;table 只用于人工查看。KooCLI profile 还能保存 timeout、retry、endpoint 和 custom 参数,这些默认值会改变所有后续命令。官方文档提醒创建类 API 的重试可能产生幂等风险,因此写操作不盲目增加 retry-count。
项目脚本先读取 profile 摘要,校验认证模式、region 和 project_id,再执行只读查询。创建资源写入 owner、environment、expires-at 和 cost-center 标签。批量巡检估算区域、项目、服务、分页与重试,避免触发 API 限流和审计存储膨胀。
权限与凭据数据按模式分别治理
AKSK、SecurityToken、SSO 会话、委托和 AssumeRole 各有不同吊销边界。人员与工作负载分离,委托只允许目标服务动作,SSO permission set 按岗位分配。debug 输出、配置文件与 API 响应都可能包含敏感字段,日志默认脱敏。
资源费用还包括云硬盘、快照、EIP、流量、日志与备份。删除主实例不代表费用归零,清理任务需要沿依赖图复核。全量盘点优先使用治理服务或集中库存,不由个人 KooCLI 遍历所有账号。
删除配置前先完成资源和身份退出
本机删除 profile 不会移除云资源或 IAM 授权。先停止调用入口,按项目与标签盘点资源,完成备份、依赖检查、删除或移交,再撤销 SSO/委托/AKSK,最后清理 profile 并运行失败验证。
hcloud configure delete --cli-profile=dev-readonly
hcloud configure list
hcloud ECS NovaListServers --cli-profile=dev-readonly --cli-region=cn-north-4最后一条应失败。团队记录 profile owner、认证模式、允许 region/project_id、IAM 权限、CLI 版本、正反实验和退出证据,确保 KooCLI 配置迁移或电脑更换后不会恢复成隐式默认状态。
