关于 huawei-cloud-flexus-l-server-manage
用于管理 Huawei Cloud Flexus L 实例生命周期的 Skill,面向负责云服务器部署与维护的人员。它可查询最新区域、镜像和规格信息,并支持创建、续订及退订实例。
主要功能
- 01查询区域、镜像和规格
- 02创建 Flexus L 实例
- 03续订现有实例
- 04退订实例
- 05通过试运行预览操作
适用场景
- 01部署开发或生产服务器
- 02在促销期间续订实例
- 03项目结束后退订实例
- 04跨区域部署以支持灾难恢复
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ huaweicloud/ huaweicloud-skills --skill huawei-cloud-flexus-l-server-manage安装后在 Claude Code 中输入/huawei-cloud-flexus-l-server-manage确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/api-reference.mdiam-policies.mdimage-specs-guide.mdpermission-guide.mdtroubleshooting.mdscripts/config.pyflexus_lifecycle.pyflexus_specs_extractor.pypyproject.tomltest_global_options_position.py详细介绍
⚠️ 安全执行规则(最高优先级):
- 所有脚本必须通过 skill action=exec 执行,绝不可直接在 shell 中运行
- 绝不可在对话中打印脚本内容或包含 AK/SK/Token 的命令
- 绝不可创建临时脚本文件,优先使用内联执行(python -c)
- 执行失败时,只返回错误信息,不要重写脚本或打印完整命令
- AK/SK/Token 必须通过环境变量传递,绝不可出现在对话中
- ⚠️ 绝对不可通过任何形式暴露、记录或打印 AK/SK/Token 的值——这是关键安全要求
华为云 Flexus L 实例生命周期管理技能
概述
此技能提供华为云 Flexus L 实例的核心生命周期管理功能:
| 模块 | 描述 | 命令 |
|---|---|---|
| 查询区域 | 显示可用区域 | show-regions |
| 查询镜像 | 显示可用镜像 | show-images |
| 查询规格 | 显示可用规格 | show-specs |
| 创建 | 购买新的 Flexus L 实例 | create-instance |
| 续费 | 为现有实例续费 | renewal |
| 退订 | 取消实例订阅 | unsubscribe |
架构
┌─────────────────────────────────────────────────────────────┐
│ Flexus L Lifecycle Skill │
├─────────────────────────────────────────────────────────────┤
│ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ Create │ │ Renewal │ │ Unsubscribe │ │
│ └────┬─────┘ └────┬─────┘ └──────┬───────┘ │
│ │ │ │ │
│ └─────────────┴────────────────┘ │
│ │ │
│ ┌─────────────▼─────────────┐ │
│ │ flexus_specs_extractor │ │
│ └─────────────┬─────────────┘ │
│ │ │
│ ┌──────▼──────┐ │
│ │ HCSS API │ (Instance Management) │
│ └──────┬──────┘ │
│ ┌──────▼──────┐ │
│ │ BSS API │ (Billing & Subscription) │
│ └──────┬──────┘ │
│ ┌──────▼──────┐ │
│ │ IAM API │ (Project ID) │
│ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
数据来源
- 区域、镜像和规格信息:从官方文档动态获取,无需本地配置文件
- 官方文档:https://support.huaweicloud.com/api-flexusl/create_instance_0001.html
- 按需获取:执行
show-regions、show-images、show-specs、create-instance时自动获取最新数据
使用场景
- 自动化服务器配置 - 为开发、测试或生产环境创建 Flexus L 实例
- 成本优化 - 在促销期间为实例续费以节省成本
- 资源清理 - 在项目结束时安全地退订实例
- 多区域部署 - 在不同区域创建实例以实现灾难恢复
适用场景
- 开发和测试环境搭建
- 生产服务器生命周期管理
- 成本控制和预算管理
- 项目资源清理和停用
重要说明
⚠️ 所有脚本和环境检查脚本都在技能包内。必须使用 skill action=exec 执行,不要直接在 shell 中运行。
前提条件
使用此技能前,请确保满足以下条件:
1. 华为云账号
- 有效的华为云账号
- 账号已完成实名认证
- 账号余额充足或已绑定付款方式
2. AK/SK 凭证
- 已创建华为云访问密钥(AK/SK)
- AK/SK 具有以下权限:
BSS:计费服务(订单查询、续订、退订)HCSS:Flexus L 实例管理IAM:项目 ID 查询(只读)
- 获取方式:华为云控制台 → 我的凭证 → 访问密钥 → 创建访问密钥
凭证配置方式:
| 方式 | 说明 | 优先级 |
|---|---|---|
| 环境变量 | HW_ACCESS_KEY、HW_SECRET_KEY、HW_SECURITY_TOKEN | 最高(推荐) |
| 命令行参数 | --ak、--sk、--security-token | 较低(可用,但不推荐) |
凭证类型(按推荐顺序):
| 优先级 | 类型 | 参数 | 说明 |
|---|---|---|---|
| 首选 | 临时 AK/SK | 环境变量 + HW_SECURITY_TOKEN | 带安全令牌的临时凭证,安全性更高 |
| 次选 | 永久 AK/SK | 仅环境变量 | 来自华为云控制台的长期访问密钥 |
环境变量(首选方式——强烈推荐):
通过环境变量 HW_ACCESS_KEY、HW_SECRET_KEY、HW_SECURITY_TOKEN 传递凭证。临时凭证需要设置 HW_SECURITY_TOKEN,永久凭证则不需要。
命令行参数(次选方式——可用):
# Temporary credentials
python3 scripts/flexus_lifecycle.py create-instance \
--ak <AK> --sk <SK> --security-token <TOKEN> \
--image Ubuntu --cpu 2 --memory 4
# Permanent credentials
python3 scripts/flexus_lifecycle.py create-instance \
--ak <AK> --sk <SK> \
--image Ubuntu --cpu 2 --memory 4
⚠️ 安全令牌说明:
- 临时 AK/SK(首选):需要设置环境变量
HW_SECURITY_TOKEN,安全性更高,强烈推荐 - 永久 AK/SK(次选):只需设置
HW_ACCESS_KEY和HW_SECRET_KEY,不需要安全令牌
3. IAM 权限
| 服务 | 策略 | 所需操作 |
|---|---|---|
| HCSS | HCSS FullAccess | hcss:lightInstances:* |
| BSS | BSS Administrator | bss:order:*、bss:renewal:*、bss:unsubscribe:* |
| IAM | IAM ReadOnlyAccess | iam:projects:list |
权限失败处理:
| 错误 | 原因 | 解决方案 |
|---|---|---|
403 Forbidden | 缺少策略 | 为用户添加所需的 IAM 策略 |
APIGW.0101 | 未启用服务 | 在目标区域启用 Flexus L |
BSS.0501 | 无权访问资源 | 确认资源属于该账号 |
权限设置详情请参阅 references/permission-guide.md。
4. 运行环境
- Python 3.8 或更高版本
- 已安装所需依赖项(见下方“依赖项”部分)
5. 网络环境
- 能够访问华为云 API 端点
- 所需端点:
hcss.cn-north-4.myhuaweicloud.comiam.myhuaweicloud.combss.myhuaweicloud.com
- 如果使用代理,请正确配置环境变量
触发规则
当用户提及以下内容时,激活此技能:
创建相关:
- “购买华为云服务器”、“创建 Flexus 实例”、“华为云轻量服务器”
- “hcss 实例”、“新建 Flexus L”
续订相关:
- “续订 Flexus L 实例”、“Flexus 续订”、“续订轻量服务器”
- “华为云续订”、“续订 flexus”
退订相关:
- “退订 Flexus L 实例”、“取消 Flexus 实例”、“退订轻量服务器”
- “华为云退订”、“取消 flexus 订阅”
⚠️ 对话展示指南(重要)
在对话中向用户展示“可用规格”或“可用镜像”时,必须立即附上以下说明:
注意
- 规格代码因区域和镜像版本而异。购买前请参阅官方文档附录 1(各镜像类型的规格代码)和附录 2(各代码的规格详情)。
- 官方链接:https://support.huaweicloud.com/api-flexusl/create_instance_0001.html#create_instance_0001__section1881914176434
此要求适用于所有对话场景,包括试运行预览。
安全说明
⚠️ AK/SK 安全要求(至关重要):
- 环境变量(首选,强烈推荐):
HW_ACCESS_KEY、HW_SECRET_KEY、HW_SECURITY_TOKEN - 命令行参数(次选,可接受):
--ak、--sk、--security-token - 优先级:环境变量 > 命令行参数
- 安全令牌:推荐使用——临时凭证的安全性更高
⚠️ 绝对安全规则——切勿违反:
- 切勿以任何形式打印、记录或显示 AK/SK/令牌值
- 切勿在错误消息或调试输出中包含 AK/SK/令牌
- 切勿将 AK/SK/令牌存储在文件或配置中
- 切勿通过不安全的渠道传输 AK/SK/令牌
- 使用命令行参数时,必须在任何输出中对其进行遮蔽
凭证使用(按推荐顺序):
# Primary: With security token (temporary credentials, higher security)
BasicCredentials(ak, sk).with_security_token(security_token)
# Secondary: Without security token (permanent credentials)
BasicCredentials(ak, sk)
核心命令
| 命令 | 功能 | 必需参数 | 可选参数 |
|---|---|---|---|
show-regions | 显示可用区域 | 无 | 无 |
show-images | 显示可用镜像 | 无 | --region |
show-specs | 显示可用规格 | --image | --region |
create-instance | 创建实例 | --ak、--sk、--security-token(推荐) | --region、--image、--plan-spec、--cpu、--memory、--period-num、--period-type、--instance-name、--auto-renew、--auto-pay、--dry-run、--confirm |
renewal | 续订实例 | --ak、--sk、--security-token(推荐)、--resource-ids | --period-num、--period-type、--auto-pay、--dry-run、--confirm |
unsubscribe | 退订实例 | --ak、--sk、--security-token(推荐)、--resource-ids | --type、--reason、--dry-run、--confirm |
参数确认
必需参数验证:
| 参数 | 说明 | 验证规则 |
|---|---|---|
--ak | Huawei Cloud 访问密钥 ID | 非空(或设置 HW_ACCESS_KEY 环境变量) |
--sk | Huawei Cloud 秘密访问密钥 | 非空(或设置 HW_SECRET_KEY 环境变量) |
--security-token | 安全令牌 | 推荐(或设置 HW_SECURITY_TOKEN 环境变量) |
--resource-ids | 资源 ID | 非空;多个 ID 用逗号分隔 |
--image | 镜像名称 | 格式:name:version,例如 Ubuntu:22.04 |
--region | 区域 ID | 必须在受支持的区域列表中 |
参数关系:
| 参数组 | 说明 |
|---|---|
--plan-spec 与 --cpu/--memory | 选择其中一项;--plan-spec 优先;若未指定,则根据 --cpu/--memory 自动匹配 |
--dry-run 与 --confirm | 选择其中一项或均不选择;--dry-run 仅预览,--confirm 跳过确认,两者均未指定时会触发交互式确认 |
默认值:
| 参数 | 默认值 | 说明 |
|---|---|---|
--region | cn-north-4 | 华北—北京四 |
--image | Ubuntu | Ubuntu 系统镜像 |
--period-num | 1 | 购买/续订 1 个月 |
--period-type | month | 按月计费 |
--type(退订) | 1 | 立即退订 |
--auto-renew | True | 启用自动续订 |
--auto-pay | True | 自动付款 |
⚠️ 强制确认机制
创建、续订和取消操作会产生实际费用,必须在获得用户明确确认后才能执行!
确认方式(任选一种):
- 对话确认:在对话中回复“confirm”或“yes”
- 命令行确认:使用
--confirm标志 - 试运行预览:使用
--dry-run预览,但不执行
⚠️ 失败处理规则:
用户确认预览订单后,如果购买失败:
- 只能发起一次请求——不得自动重试
- 向用户说明失败原因
- 引导用户重新购买——由用户决定下一步
- 未经用户明确要求,绝不更改参数(区域、规格、镜像等)
用法
基本命令格式
python3 scripts/flexus_lifecycle.py <command> [options]
全局参数
| 参数 | 描述 | 必填 | 环境变量 |
|---|---|---|---|
--ak | Huawei Cloud Access Key ID | 是(或使用环境变量) | HW_ACCESS_KEY |
--sk | Huawei Cloud Secret Access Key | 是(或使用环境变量) | HW_SECRET_KEY |
--security-token | 安全令牌 | 推荐 | HW_SECURITY_TOKEN |
--region | 区域 ID(默认值:cn-north-4) | 否 | - |
--dry-run | 试运行,不实际执行 | 否 | - |
--confirm | 强制确认,跳过交互式确认 | 否 | - |
⚠️ 全局选项(--ak/--sk/--security-token/--region/--dry-run/--confirm)既可以写在子命令之前,也可以写在子命令之后。 两种位置等效,且都必须正常工作:
# Global option BEFORE subcommand (前置写法)
python3 scripts/flexus_lifecycle.py --region cn-east-3 show-images
python3 scripts/flexus_lifecycle.py --dry-run unsubscribe --resource-ids <id>
python3 scripts/flexus_lifecycle.py --confirm create-instance --image Ubuntu
# Global option AFTER subcommand (后置写法)
python3 scripts/flexus_lifecycle.py show-images --region cn-east-3
python3 scripts/flexus_lifecycle.py unsubscribe --resource-ids <id> --dry-run
python3 scripts/flexus_lifecycle.py create-instance --confirm --image Ubuntu
回归参考(FLEXUS2-ISSUE-004):写在子命令之前的 --dry-run/--region/--confirm 必须生效,不得静默重置为默认值:
--dry-run unsubscribe --resource-ids <id>必须进入试运行模式,不得要求实际确认--region cn-east-3 show-images必须查询 cn-east-3,而不是默认区域 cn-north-4--confirm create-instance ...必须跳过交互式确认提示
凭证配置示例
方法 1:使用环境变量(首选——强烈推荐)
python3 scripts/flexus_lifecycle.py create-instance --image Ubuntu --cpu 2 --memory 4
方法 2:使用命令行参数(次选——可接受)
# Temporary credentials
python3 scripts/flexus_lifecycle.py create-instance \
--ak <AK> --sk <SK> --security-token <TOKEN> \
--image Ubuntu \
--cpu 2 \
--memory 4
# Permanent credentials
python3 scripts/flexus_lifecycle.py create-instance \
--ak <AK> --sk <SK> \
--image Ubuntu \
--cpu 2 \
--memory 4
模块详情
0️⃣ 查询功能
显示可用区域:
python3 scripts/flexus_lifecycle.py show-regions
显示某个区域的可用镜像:
python3 scripts/flexus_lifecycle.py --region cn-north-4 show-images
显示某个镜像的可用规格:
python3 scripts/flexus_lifecycle.py --region cn-north-4 show-specs --image Ubuntu
1️⃣ 创建实例(create-instance)
购买新的 Flexus L 实例,支持 Windows/Linux。
方法 1:自动匹配规格(推荐)
python3 scripts/flexus_lifecycle.py create-instance \
--region cn-north-4 \
--image Ubuntu \
--cpu 2 \
--memory 4
方法 2:指定规格
python3 scripts/flexus_lifecycle.py create-instance \
--region cn-north-4 \
--image Ubuntu \
--plan-spec hf.medium.1.linux
方法 3:使用默认规格
python3 scripts/flexus_lifecycle.py create-instance \
--region cn-north-4 \
--image Ubuntu
创建参数:
| 参数 | 描述 | 默认值 |
|---|---|---|
--image | 镜像名称 | Ubuntu |
--plan-spec | 实例规格 | 自动匹配或配置默认值 |
--cpu | CPU 核心数(用于自动匹配) | - |
--memory | 内存 GB(用于自动匹配) | - |
--period-num | 购买时长(月) | 1 |
--period-type | 周期类型(月/年) | month |
--instance-name | 实例名称 | 自动生成 |
--auto-renew | 自动续订 | True |
--auto-pay | 自动支付 | True |
可用规格参考:
详细规格请参见 references/image-specs-guide.md。
2️⃣ 续订实例(renewal)
续订现有 Flexus L 实例。
# Preview renewal (recommended)
python3 scripts/flexus_lifecycle.py renewal \
--resource-ids <resource-id> \
--period-num 1 \
--period-type month \
--dry-run
# Confirm renewal
python3 scripts/flexus_lifecycle.py renewal \
--resource-ids <resource-id> \
--period-num 6 \
--period-type month \
--confirm
# Renew multiple instances
python3 scripts/flexus_lifecycle.py renewal \
--resource-ids id1,id2,id3 \
--period-num 1 \
--period-type year \
--confirm
续订参数:
| 参数 | 描述 | 默认值 |
|---|---|---|
--resource-ids | 资源 ID(以逗号分隔) | 必填 |
--period-num | 续订周期数 | 1 |
--period-type | 周期类型(月/年) | month |
--auto-pay | 自动支付 | True |
3️⃣ 取消实例订阅(unsubscribe)
取消 Flexus L 实例订阅。
# Preview unsubscribe (recommended)
python3 scripts/flexus_lifecycle.py unsubscribe \
--resource-ids <resource-id> \
--dry-run
# Immediate unsubscribe (type 1)
python3 scripts/flexus_lifecycle.py unsubscribe \
--resource-ids <resource-id> \
--type 1 \
--confirm
# Expiry unsubscribe (type 2)
python3 scripts/flexus_lifecycle.py unsubscribe \
--resource-ids <resource-id> \
--type 2 \
--confirm
# Batch unsubscribe
python3 scripts/flexus_lifecycle.py unsubscribe \
--resource-ids id1,id2,id3 \
--type 1 \
--reason "Project ended" \
--confirm
取消订阅参数:
| 参数 | 说明 | 默认值 |
|---|---|---|
--resource-ids | 资源 ID(以逗号分隔) | 必填 |
--type | 取消订阅类型(1=立即,2=到期) | 1 |
--reason | 取消订阅原因 | 无 |
取消订阅类型:
| 类型 | 说明 | 效果 |
|---|---|---|
| 1 | 取消资源及续订周期的订阅 | 资源立即停止,按比例退款 |
| 2 | 仅取消续订周期的订阅 | 资源继续使用至到期 |
可用区域
⚠️ 注意:Flexus L 实例目前仅支持以下区域:
| 区域 ID | 区域名称 | 规格前缀 |
|---|---|---|
| cn-north-4 | 华北 - 北京 4 | hf.* |
| cn-east-3 | 华东 - 上海 1 | hf.* |
| cn-south-1 | 华南 - 广州 | hf.* |
| cn-southwest-2 | 西南 - 贵阳 1 | ahf.* |
| ap-southeast-1 | 中国香港 | hf.* |
| ap-southeast-3 | 亚太 - 新加坡 | hf.* |
依赖项
Python 依赖项
使用 pip 安装:
pip install requests huaweicloudsdkcore huaweicloudsdkbss
或使用 pyproject.toml:
cd scripts
pip install -e .
pyproject.toml
[project]
name = "flexus-lifecycle"
version = "1.0.0"
dependencies = [
"requests>=2.28.0",
"huaweicloudsdkcore>=3.0.0",
"huaweicloudsdkbss>=3.0.0",
]
文件结构
skills/huawei-cloud-flexus-l-server-manage/
├── SKILL.md # This file
├── scripts/
│ ├── flexus_lifecycle.py # Main lifecycle script
│ ├── flexus_specs_extractor.py # Dynamic specs fetcher
│ └── pyproject.toml # Dependencies
└── references/
├── api-reference.md # API reference
├── iam-policies.md # IAM policies
├── image-specs-guide.md # Image specs guide
├── permission-guide.md # Permission setup
└── troubleshooting.md # Troubleshooting
错误处理
常见错误
| 错误代码 | 说明 | 解决方案 |
|---|---|---|
401 Unauthorized | AK/SK 无效 | 确认 AK/SK 正确且处于启用状态 |
403 Forbidden | 权限不足 | 添加所需的 IAM 策略 |
APIGW.0101 | 找不到 API | 检查该区域是否已启用服务 |
APIGW.0301 | 签名验证失败 | 检查 SK 是否正确 |
BSS.0501 | 找不到资源 | 确认资源 ID 正确 |
BSS.0502 | 资源状态无效 | 检查资源状态 |
400 Bad Request | 参数无效 | 检查规格与镜像是否兼容 |
有关错误处理的详细信息,请参阅 references/troubleshooting.md。
参考资料
外部参考资料
- Flexus L 实例购买指南 - 官方 API 文档
- AK/SK 身份验证 - IAM 身份验证指南
- 华为云控制台 - 资源管理控制台