mcpField
H
huawei-cloud-flexus-l-server-manage

huawei-cloud-flexus-l-server-manage

github.com/huaweicloud云与 DevOps59195 次安装2 天前更新
代码仓库

关于 huawei-cloud-flexus-l-server-manage

用于管理 Huawei Cloud Flexus L 实例生命周期的 Skill,面向负责云服务器部署与维护的人员。它可查询最新区域、镜像和规格信息,并支持创建、续订及退订实例。

主要功能

  1. 01查询区域、镜像和规格
  2. 02创建 Flexus L 实例
  3. 03续订现有实例
  4. 04退订实例
  5. 05通过试运行预览操作

适用场景

  1. 01部署开发或生产服务器
  2. 02在促销期间续订实例
  3. 03项目结束后退订实例
  4. 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.md
iam-policies.md
image-specs-guide.md
permission-guide.md
troubleshooting.md
scripts/
config.py
flexus_lifecycle.py
flexus_specs_extractor.py
pyproject.toml
test_global_options_position.py

详细介绍

⚠️ 安全执行规则(最高优先级):

  1. 所有脚本必须通过 skill action=exec 执行,绝不可直接在 shell 中运行
  2. 绝不可在对话中打印脚本内容或包含 AK/SK/Token 的命令
  3. 绝不可创建临时脚本文件,优先使用内联执行(python -c)
  4. 执行失败时,只返回错误信息,不要重写脚本或打印完整命令
  5. AK/SK/Token 必须通过环境变量传递,绝不可出现在对话中
  6. ⚠️ 绝对不可通过任何形式暴露、记录或打印 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)                   │
│              └─────────────┘                                 │
└─────────────────────────────────────────────────────────────┘
数据来源
使用场景
  1. 自动化服务器配置 - 为开发、测试或生产环境创建 Flexus L 实例
  2. 成本优化 - 在促销期间为实例续费以节省成本
  3. 资源清理 - 在项目结束时安全地退订实例
  4. 多区域部署 - 在不同区域创建实例以实现灾难恢复
适用场景
  • 开发和测试环境搭建
  • 生产服务器生命周期管理
  • 成本控制和预算管理
  • 项目资源清理和停用
重要说明

⚠️ 所有脚本和环境检查脚本都在技能包内。必须使用 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 权限
服务策略所需操作
HCSSHCSS FullAccesshcss:lightInstances:*
BSSBSS Administratorbss:order:*、bss:renewal:*、bss:unsubscribe:*
IAMIAM ReadOnlyAccessiam: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.com
    • iam.myhuaweicloud.com
    • bss.myhuaweicloud.com
  • 如果使用代理,请正确配置环境变量

触发规则

当用户提及以下内容时,激活此技能:

创建相关:

  • “购买华为云服务器”、“创建 Flexus 实例”、“华为云轻量服务器”
  • “hcss 实例”、“新建 Flexus L”

续订相关:

  • “续订 Flexus L 实例”、“Flexus 续订”、“续订轻量服务器”
  • “华为云续订”、“续订 flexus”

退订相关:

  • “退订 Flexus L 实例”、“取消 Flexus 实例”、“退订轻量服务器”
  • “华为云退订”、“取消 flexus 订阅”

⚠️ 对话展示指南(重要)

在对话中向用户展示“可用规格”或“可用镜像”时,必须立即附上以下说明:

注意

此要求适用于所有对话场景,包括试运行预览。


安全说明

⚠️ AK/SK 安全要求(至关重要):

  • 环境变量(首选,强烈推荐):HW_ACCESS_KEY、HW_SECRET_KEY、HW_SECURITY_TOKEN
  • 命令行参数(次选,可接受):--ak、--sk、--security-token
  • 优先级:环境变量 > 命令行参数
  • 安全令牌:推荐使用——临时凭证的安全性更高

⚠️ 绝对安全规则——切勿违反:

  1. 切勿以任何形式打印、记录或显示 AK/SK/令牌值
  2. 切勿在错误消息或调试输出中包含 AK/SK/令牌
  3. 切勿将 AK/SK/令牌存储在文件或配置中
  4. 切勿通过不安全的渠道传输 AK/SK/令牌
  5. 使用命令行参数时,必须在任何输出中对其进行遮蔽

凭证使用(按推荐顺序):

# 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

参数确认

必需参数验证:

参数说明验证规则
--akHuawei Cloud 访问密钥 ID非空(或设置 HW_ACCESS_KEY 环境变量)
--skHuawei 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 跳过确认,两者均未指定时会触发交互式确认

默认值:

参数默认值说明
--regioncn-north-4华北—北京四
--imageUbuntuUbuntu 系统镜像
--period-num1购买/续订 1 个月
--period-typemonth按月计费
--type(退订)1立即退订
--auto-renewTrue启用自动续订
--auto-payTrue自动付款

⚠️ 强制确认机制

创建、续订和取消操作会产生实际费用,必须在获得用户明确确认后才能执行!

确认方式(任选一种):

  1. 对话确认:在对话中回复“confirm”或“yes”
  2. 命令行确认:使用 --confirm 标志
  3. 试运行预览:使用 --dry-run 预览,但不执行

⚠️ 失败处理规则:

用户确认预览订单后,如果购买失败:

  • 只能发起一次请求——不得自动重试
  • 向用户说明失败原因
  • 引导用户重新购买——由用户决定下一步
  • 未经用户明确要求,绝不更改参数(区域、规格、镜像等)

用法

基本命令格式
python3 scripts/flexus_lifecycle.py <command> [options]
全局参数
参数描述必填环境变量
--akHuawei Cloud Access Key ID是(或使用环境变量)HW_ACCESS_KEY
--skHuawei 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实例规格自动匹配或配置默认值
--cpuCPU 核心数(用于自动匹配)-
--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华北 - 北京 4hf.*
cn-east-3华东 - 上海 1hf.*
cn-south-1华南 - 广州hf.*
cn-southwest-2西南 - 贵阳 1ahf.*
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 UnauthorizedAK/SK 无效确认 AK/SK 正确且处于启用状态
403 Forbidden权限不足添加所需的 IAM 策略
APIGW.0101找不到 API检查该区域是否已启用服务
APIGW.0301签名验证失败检查 SK 是否正确
BSS.0501找不到资源确认资源 ID 正确
BSS.0502资源状态无效检查资源状态
400 Bad Request参数无效检查规格与镜像是否兼容

有关错误处理的详细信息,请参阅 references/troubleshooting.md。


参考资料

外部参考资料

评论

支持 Markdown