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 インスタンスのライフサイクルを管理するスキルです。サーバーの導入・運用担当者向けに、最新のリージョン、イメージ、仕様の確認と、作成・更新・解約を提供します。

主な機能

  1. 01リージョン、イメージ、仕様の確認
  2. 02Flexus 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 経由で実行する必要があります。シェルで直接実行してはいけません
  2. AK/SK/Token を含むスクリプトの内容やコマンドを会話に出力してはいけません
  3. 一時的なスクリプトファイルを作成してはいけません。インライン実行(python -c)を優先してください
  4. 実行に失敗した場合は、エラー情報のみを返してください。スクリプトを書き換えたり、コマンド全体を出力したりしてはいけません
  5. AK/SK/Token は環境変数経由で渡す必要があります。会話に出してはいけません
  6. ⚠️ いかなる場合も、AK/SK/Token の値を漏えい、ログ出力、表示してはいけません。これは重大なセキュリティ要件です

Huawei Cloud Flexus L インスタンスのライフサイクル管理スキル

概要

このスキルは、Huawei Cloud 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 の実行時に最新データを自動で取得します
ユースケース
  1. サーバーのプロビジョニングを自動化 - 開発、テスト、本番環境用の Flexus L インスタンスを作成します
  2. コストの最適化 - 販売促進期間中にインスタンスを更新してコストを削減します
  3. リソースのクリーンアップ - プロジェクト終了時にインスタンスを安全に解約します
  4. マルチリージョン展開 - 災害復旧のため、複数のリージョンにインスタンスを作成します
適用シナリオ
  • 開発・テスト環境のセットアップ
  • 本番サーバーのライフサイクル管理
  • コスト管理と予算管理
  • プロジェクトリソースのクリーンアップと廃止
重要事項

⚠️ すべてのスクリプトと環境チェック用スクリプトはスキルパッケージ内にあります。実行には skill action=exec を使用してください。シェルで直接実行してはいけません。

前提条件

このスキルを使用する前に、以下の条件を満たしていることを確認してください。

1. Huawei Cloud アカウント
  • 有効な Huawei Cloud アカウントを持っていること
  • アカウントの実名認証が完了していること
  • アカウントに十分な残高があるか、支払い方法が登録されていること
2. AK/SK 認証情報
  • Huawei Cloud のアクセスキー(AK/SK)を作成済みであること
  • AK/SK には、以下の権限が必要です。
    • BSS:請求サービス(注文照会、更新、解約)
    • HCSS:Flexus L インスタンス管理
    • IAM:プロジェクト ID の照会(読み取り専用)
  • 取得方法:Huawei Cloud Console → My Credentials → Access Keys → Create Access Key

認証情報の設定方法:

方法説明優先度
環境変数HW_ACCESS_KEY、HW_SECRET_KEY、HW_SECURITY_TOKEN最優先(推奨)
コマンドラインパラメーター--ak、--sk、--security-token低(使用可能ですが、非推奨)

認証情報の種類(推奨順):

優先度種類パラメーター説明
優先一時 AK/SK環境変数 + HW_SECURITY_TOKENセキュリティトークンを含む一時的な認証情報で、セキュリティがより高くなります
次点永続 AK/SK環境変数のみHuawei Cloud コンソールで取得した長期アクセスキーです

環境変数(主な方法 — 強く推奨):

認証情報は、環境変数 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. ネットワーク環境
  • Huawei Cloud API エンドポイントにアクセスできること
  • 必要なエンドポイント:
    • hcss.cn-north-4.myhuaweicloud.com
    • iam.myhuaweicloud.com
    • bss.myhuaweicloud.com
  • プロキシを使用する場合は、環境変数を正しく設定してください

トリガールール

ユーザーが以下の内容に言及した場合、このスキルを有効にします。

作成関連:

  • 「Huawei Cloud サーバーを購入」「Flexus インスタンスを作成」「Huawei Cloud 軽量サーバー」
  • 「hcss インスタンス」「新しい Flexus L」

更新関連:

  • 「Flexus L インスタンスを更新」「Flexus の更新」「軽量サーバーを更新」
  • 「Huawei Cloud の更新」「flexus を更新」

解約関連:

  • 「Flexus L インスタンスを解約」「Flexus インスタンスをキャンセル」「軽量サーバーを解約」
  • 「Huawei Cloud の解約」「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空でないこと。複数の場合はカンマ区切り
--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中国北部 - 北京 4
--imageUbuntuUbuntu システムイメージ
--period-num11 か月分を購入/更新
--period-typemonth月額課金
--type(登録解除)1即時登録解除
--auto-renewTrue自動更新を有効化
--auto-payTrue自動支払い

⚠️ 必須確認メカニズム

作成、更新、キャンセルの操作には実際の費用が発生するため、ユーザーから明示的な確認を得た後にのみ実行してください!

確認方法(いずれかを選択):

  1. ダイアログで確認:会話で「confirm」または「yes」と返信します
  2. コマンドラインで確認:--confirm フラグを使用します
  3. ドライランでプレビュー:--dry-run を使用して、実行せずにプレビューします

⚠️ 失敗時の対応ルール:

ユーザーがプレビューした注文を確認した後、購入に失敗した場合:

  • リクエストは1回だけ実行してください。自動的に再試行しないでください
  • 失敗の理由をユーザーに返してください
  • 再購入するようユーザーに案内してください。次の手順はユーザーに決めてもらいます
  • ユーザーから明示的な依頼がない限り、パラメーター(リージョン、仕様、イメージなど)を変更しないでください

使用方法

基本的なコマンド形式
python3 scripts/flexus_lifecycle.py <command> [options]
グローバルパラメーター
パラメーター説明必須環境変数
--akHuawei Cloud Access Key IDはい(または環境変数)HW_ACCESS_KEY
--skHuawei Cloud Secret Access Keyはい(または環境変数)HW_SECRET_KEY
--security-tokenSecurity 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-north-4 ではなく、cn-east-3 を照会する必要があります
  • --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.0101API が見つかりませんリージョンでサービスが有効になっていることを確認してください
APIGW.0301署名の検証に失敗しましたSK が正しいことを確認してください
BSS.0501リソースが見つかりませんリソース ID が正しいことを確認してください
BSS.0502リソースの状態が無効ですリソースのステータスを確認してください
400 Bad Requestパラメーターが無効です仕様とイメージの互換性を確認してください

詳しいエラー処理については、references/troubleshooting.md を参照してください。


参考資料

外部資料

コメント