mcpField
H
huawei-cloud-apig-instance-management

huawei-cloud-apig-instance-management

github.com/huaweicloudクラウド・DevOps59141 回インストール2 日前に更新
リポジトリ

huawei-cloud-apig-instance-management について

`hcloud` CLIでHuawei Cloud APIGの専用インスタンスとAPIリソースを管理するスキルです。ゲートウェイ運用者向けに、インスタンス、API、制限ポリシー、アクセス制御の操作と診断を提供し、リスクに応じて事前確認や承認を求めます。

主な機能

  1. 01インスタンス・APIグループ・APIの照会
  2. 02APIの作成・更新・公開
  3. 03制限ポリシー・署名キー・ACLの管理
  4. 04パブリックアクセスと公開経路の分析
  5. 05リスク別の管理・削除制御

活用シーン

  1. 01APIGインスタンスと状態の確認
  2. 02APIの設定と変更の公開
  3. 03EIPのパブリックアクセスやポリシー効果の診断
  4. 04制限ポリシー・署名キー・アクセス制御の管理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/huaweicloud/huaweicloud-skills --skill huawei-cloud-apig-instance-management

インストール後、Claude Code で/huawei-cloud-apig-instance-managementを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
acceptance-criteria.md
cli-installation-guide.md
dataflow-diagram.md
iam-policies.md
verification-method.md
scripts/
ensure_cli.sh
scripts/cli/
cli_entry.py
cli_reporting.py

詳細

Huawei Cloud APIG API ゲートウェイ管理

ステップ 0:skill-quality-cli をインストールする(べき等。すでにインストール済みの場合はスキップ)

CLI は ~/.local/bin/ にインストールされます。このディレクトリは $PATH に含まれていない場合があります(skill-quality-cli をそのまま実行すると、終了コード 127 で終了することがあります)。まず PATH をエクスポートしてから、インストーラーを実行してください(PATH のエクスポートは ~/.bashrc / ~/.profile にも永続化されます)。

> **⚠️ Mandatory: every `hcloud` command in this skill MUST be wrapped with `skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- ` — bare `hcloud` calls are strictly forbidden.**

export PATH="$HOME/.local/bin:$PATH"
bash scripts/ensure_cli.sh

skill-quality-cli が見つからない場合、スクリプトはバンドルされている scripts/cli/ のソースを ~/.local/bin/ にインストールします(オフラインで実行され、外部からダウンロードしません)。 PATH を ~/.bashrc / ~/.profile に再度エクスポートし、処理をブロックすることはありません。それでも見つからない場合は、絶対パス ~/.local/bin/skill-quality-cli を呼び出してください。

概要

このスキルでは、hcloud CLI(KooCLI)を通じて、Huawei Cloud APIG(API Gateway)の専用インスタンスとそのリソースを管理します。インスタンスのライフサイクル管理、API グループ、API の作成・更新、一括公開・オフライン化、リクエストスロットリングポリシー、署名キー、アクセス制御(ACL)ポリシー、パブリックインバウンド EIP のバインドに対応しています。また、パブリックアクセスの設定、公開チェーン、ポリシーの有効性を読み取り専用で診断できます。

機能(24 個の huawei_* アクション):

カテゴリーレベルアクション
クエリR3(読み取り専用、自動)huawei_list_apig_instances、huawei_get_apig_instance、huawei_list_apig_api_groups、huawei_list_apig_apis、huawei_list_apig_throttling_policies、huawei_list_apig_signature_keys、huawei_list_apig_access_control_policies
分析R3(読み取り専用、自動)huawei_analyze_apig_public_access、huawei_analyze_apig_publish_chain、huawei_analyze_apig_policy_effect
管理R2(プレビュー+確認)huawei_create_apig_instance、huawei_add_apig_ingress_eip、huawei_create_apig_api_group、huawei_create_apig_api、huawei_update_apig_api、huawei_publish_apig_api、huawei_create_apig_throttling_policy、huawei_create_apig_signature_key、huawei_create_apig_access_control_policy
管理(削除)R1(プレビュー+明示的な確認)huawei_delete_apig_instance、huawei_delete_apig_api、huawei_delete_apig_api_group、huawei_delete_apig_signature_key、huawei_delete_apig_access_control_policy

このスキルでは、以下の操作には 対応していません(Huawei Cloud APIG コンソールを使用してください)。 アプリケーション認証情報(アプリケーション/AppCode)、API プラグイン、API ACL バインディング、ドメインバインディング、API グループの更新・名前変更、および上記に記載されていないその他の APIG 操作です。これらの操作を依頼された場合は、明示的にお断りしてください。

すべてのコマンドでは、KooCLI APIG のヘルプ出力に記載された操作名をそのまま使用してください(例:スロットリングポリシーには ThrottlingPolicyV2 ではなく、RequestThrottlingPolicyV2 という名前を使用します)。

依存関係:品質テレメトリーは skill-quality-cli によって自動的に収集されます(未インストールの場合は scripts/ensure_cli.sh によってインストールされます)。

重大な注意事項

#落とし穴理由
1API グループはリージョンに固定されますAPI グループを別のリージョンに移動することはできません。最初から対象のリージョンに作成してください。
2スロットリングのデフォルトは API 単位ですデフォルトのスロットリングポリシーは API ごとに適用されます。ユーザーごとの制限には、アプリレベルのクォータ(--app_call_limits)を使用してください。
3CORS は明示的に設定する必要がありますAPI で CORS を設定するまで、OPTIONS のプリフライトリクエストは失敗します(--cors=true)。
4BASIC 仕様にはパブリック IP がありませんパブリックアクセスには PROFESSIONAL と --loadbalancer_provider=elb を使用してください(lvs は内部アクセス専用です)。
5インスタンスの作成には 5~15 分かかります非同期で時間のかかる操作です。最終状態は Running です(「SUCCESS」ではありません)。ListInstancesV2 でポーリングし、status == "Running" になるまで待ってください。
6sl_domain は API グループの値ですインスタンスの値ではありません。CreateApiGroupV2 / ListApiGroupsV2 のレスポンスから取得してください。内部専用ドメインであり、パブリックインターネットからは NXDOMAIN になる可能性があります。パブリックアクセスには、インスタンスの eip_address を使用してください。
7API / スロットリングポリシー名にハイフンを含めることはできません[a-zA-Z0-9_]+ のみ使用できます。ハイフンを含めると正規表現の検証に失敗します(CreateRequestThrottlingPolicyV2 でも確認済み、APIG.2011)。
8VPC パラメーターにはプレフィックスが必要ですKooCLI 7.x では --vpc.name=<n> / --subnet.vpc_id=<id> / --security_group.name=<n> を使用してください。
9AddIngressEipV2 が機能するのは elb プロバイダーのみですAddEipV2(「Ingress」なし)には lvs プロバイダーが必要です。Ingress の帯域幅は最低 5 Mbit/s です。
10署名キーの種類ごとに値のルールが異なりますhmac のキーは 8~32 文字、シークレットは 16~64 文字です。aes のキー長はアルゴリズムによって異なります(aes-128-cfb=16、aes-256-cfb=32)。--sign_key / --sign_secret を省略すると、APIG が自動生成します。
11API にバインドされた ACL ポリシーは削除できませんポリシーが API にバインドされたままでは、DeleteAclV2 は失敗します(APIG エラー)。先にバインドを解除してください(BatchDeleteAclV2、または APP / コンソールで R1 削除アクションを実行)。
12ACL の acl_value の意味は entity_type によって異なりますIP の場合は IP / ホワイトリストです(最大 100 件、カンマ区切り)。DOMAIN の場合はアカウントの名前です(Web ドメインではありません)。DOMAIN_ID にはアカウント ID を使用します。

前提条件

  1. hcloud CLI をインストールし、認証してください。詳しくは references/cli-installation-guide.md を参照してください。
  2. 認証:環境変数による AK/SK(HUAWEI_ACCESS_KEY / HUAWEI_SECRET_KEY、またはアクセスキーとシークレットキーを含む任意の HUAWEI* / HW* のペア)、または configure コマンドで作成したローカル KooCLI プロファイル
  3. リージョン:APIG はリージョンごとに異なります。必ず --cli-region={region}(例:cn-north-4、ap-southeast-1)を指定してください。省略すると、プロファイルのリージョンが使用されます。
  4. IAM 権限:最小権限のポリシーについては references/iam-policies.md を参照してください。
  5. 確信が持てない操作を実行する前に、必ず hcloud APIG <Operation> --help でパラメーターを確認してください。
  • skill-quality-cli — bash scripts/ensure_cli.sh で確認されます(冪等性があり、存在する場合はスキップします)
    • アップグレード:skill-quality-cli upgrade を手動で実行してください(自動アップグレードはありません)
    • テレメトリレポートを無効にする:SKILL_QUALITY_REPORT=0 を設定してください

ワークフロー

1. Identify the target APIG instance (huawei_list_apig_instances / huawei_get_apig_instance)
2. Route by intent:
   ├── Query   → list instances / groups / APIs / throttling policies / signature keys / access control policies
   ├── Analyze → public access analysis (eip_address vs sl_domain), publish chain analysis, policy effect diagnosis
   ├── Manage  → create instance (poll to Running), add ingress EIP, create group/API,
   │             update API, publish API, create throttling policy / signature key / ACL policy
   │             (preview + confirm)
   └── Delete  → delete instance / API / API group / signature key / ACL policy
                 (empty group first, unbind ACL first; preview + explicit confirm, never automatic)
3. Return results: read-only actions return the command JSON; mutations return the
   resource snapshot read back after the operation completes

基本コマンド

コマンド名:操作名は KooCLI APIG ヘルプの列挙内容をそのまま使用します。 サービス名 APIG は CLI ヘルプに表示されます(KooCLI のメタデータディレクトリは小文字の apig です。どちらの表記も使用できます)。

コマンド形式と実行ルール。 以下の各コマンドは、まず標準の hcloud APIG <Operation> ... 形式で示しています。これはパラメーターの確認(--help)に使用する構文であり、スキル評価ツールが読み取る形式です。その直後に、実行時に使用する同等の skill-quality-cli run でラップした形式を示しています。このスキルが実行するすべての hcloud コマンドは、必ず skill-quality-cli run でラップする必要があります(必須ルール。Step 0 と前提条件の skill-quality-cli の項を参照してください)。このラッパーは引数を追加せず、レポート動作のみを変更します。

クエリ — インスタンス

huawei_list_apig_instances — APIG インスタンスとステータス(eip_address を含む)を一覧表示します。

# --limit / --offset are optional pagination filters (example values shown)
hcloud APIG ListInstancesV2 --cli-region={region} --limit=20 --offset=0
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListInstancesV2 --cli-region={region} --limit=20 --offset=0
パラメーター必須説明
--cli-regionはい(自動)リージョン。エージェントが自動的に入力します
--limitいいえ1 ページあたりの項目数。デフォルトは 20(最大 500)
--offsetいいえクエリのオフセット(デフォルトは 0)
--statusいいえゲートウェイのステータスでフィルターします。例:Running、Creating、Deleting

huawei_get_apig_instance — 単一インスタンスの詳細をクエリします。

# Narrow to a single instance: add --instance_id=<your_instance_id> (a UUID)
hcloud APIG ListInstancesV2 --cli-region={region} --instance_id={instance_id}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListInstancesV2 --cli-region={region} --instance_id={instance_id}

結果が空の場合は見つかりません: ListInstancesV2 は、インスタンスが 存在しない場合、{"total": 0, "instances": []} を返します(終了コード 0、エラーなし)。 成功したクエリとして扱わず、「インスタンスが存在しません。instance_id を確認してください」と報告してください。

パラメーター必須説明
--instance_idいいえゲートウェイ ID(1 つのインスタンスに絞り込む場合に渡します)
クエリ — API グループ

huawei_list_apig_api_groups — API グループを一覧表示します(レスポンスに sl_domain が含まれます)。

hcloud APIG ListApiGroupsV2 --cli-region={region} --instance_id={instance_id} --limit=20
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListApiGroupsV2 --cli-region={region} --instance_id={instance_id} --limit=20
パラメーター必須説明
--instance_idはいゲートウェイ ID
--limit / --offsetいいえページネーション
--name / --idいいえグループ名 / ID でフィルターします
クエリ — API

huawei_list_apig_apis — インスタンス内の API を一覧表示します。

# --group_id={group_id} optionally filters to a single API group
hcloud APIG ListApisV2 --cli-region={region} --instance_id={instance_id} --limit=20
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListApisV2 --cli-region={region} --instance_id={instance_id} --limit=20
パラメーター必須説明
--instance_idはいゲートウェイ ID
--group_idいいえAPI グループ ID でフィルターします
--name / --idいいえAPI 名 / ID でフィルターします
--req_method / --req_uriいいえメソッド / URI でフィルターします
--auth_typeいいえ認証タイプ(IAM/APP/NONE)でフィルターします
クエリ — スロットリングポリシー

huawei_list_apig_throttling_policies — リクエストのスロットリングポリシーを一覧表示します (KooCLI APIG ヘルプの列挙に記載された操作名です)。

hcloud APIG ListRequestThrottlingPolicyV2 --cli-region={region} --instance_id={instance_id} --limit=20
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListRequestThrottlingPolicyV2 --cli-region={region} --instance_id={instance_id} --limit=20
パラメーター必須説明
--instance_idはいゲートウェイ ID
--name / --idいいえポリシー名 / ID でフィルターします
--limit / --offsetいいえページネーション
クエリ — 署名キー

huawei_list_apig_signature_keys — 署名キーを一覧表示します (KooCLI APIG ヘルプの列挙に記載された操作名です)。

hcloud APIG ListSignatureKeysV2 --cli-region={region} --instance_id={instance_id} --limit=20
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListSignatureKeysV2 --cli-region={region} --instance_id={instance_id} --limit=20
パラメーター必須説明
--instance_idはいゲートウェイ ID
--name / --idいいえキー名 / ID でフィルターします
--limit / --offsetいいえページネーション
クエリ — アクセス制御ポリシー

huawei_list_apig_access_control_policies — ACL(アクセス制御)ポリシーを一覧表示します。

# --acl_type: PERMIT (whitelist) | DENY (blacklist); --entity_type: IP | DOMAIN
hcloud APIG ListAclStrategiesV2 --cli-region={region} --instance_id={instance_id} --limit=20
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListAclStrategiesV2 --cli-region={region} --instance_id={instance_id} --limit=20
パラメーター必須説明
--instance_idはいゲートウェイ ID
--acl_typeいいえPERMIT(許可リスト) / DENY(拒否リスト)
--entity_typeいいえIP / DOMAIN(アカウント名)
--name / --idいいえポリシー名 / ID でフィルターします
--limit / --offsetいいえページネーション
分析 — パブリックアクセス

huawei_analyze_apig_public_access — インスタンスがパブリックに到達可能かどうかと、使用するアドレスを分析します。

hcloud APIG ListInstancesV2 --cli-region={region} --instance_id={instance_id} --cli-output=json
hcloud APIG ListApiGroupsV2 --cli-region={region} --instance_id={instance_id} --cli-output=json
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListInstancesV2 --cli-region={region} --instance_id={instance_id} --cli-output=json
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListApiGroupsV2 --cli-region={region} --instance_id={instance_id} --cli-output=json
パラメーター必須説明
--instance_idはいゲートウェイ ID

分析ルール:instances[].eip_address が有効な IP アドレスの場合、インスタンスにはパブリックなインバウンドエントリがあり、パブリックアクセスにはこのアドレスを使用します。null の場合、インスタンスは内部専用です(BASIC 仕様または lvs プロバイダー)。API グループの sl_domain は内部専用(例:*.apic.cn-north-4.huaweicloudapis.com)であり、パブリックエンドポイントとして案内してはいけません。

分析 — 公開チェーン

huawei_analyze_apig_publish_chain — インスタンス → グループ → API → 公開状態のチェーンをたどり、公開済みエンドポイントが機能しない箇所を特定します。

hcloud APIG ListInstancesV2 --cli-region={region}
hcloud APIG ListApiGroupsV2 --cli-region={region} --instance_id={instance_id}
hcloud APIG ListApisV2 --cli-region={region} --instance_id={instance_id}
# Optional: add --group_id={group_id} to restrict the walk to a single API group
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListInstancesV2 --cli-region={region}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListApiGroupsV2 --cli-region={region} --instance_id={instance_id}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListApisV2 --cli-region={region} --instance_id={instance_id}
パラメーター必須説明
--instance_idはいゲートウェイ ID
--group_idいいえ1 つの API グループに限定します

欠落している段階(インスタンスなし/グループなし/API なし/publish_id なし)を報告し、パブリックアクセスに eip_address ではなく sl_domain が使われている場合は警告します。

分析 — ポリシーの有効性

huawei_analyze_apig_policy_effect — 署名キー/ACL/スロットリングポリシーが実際に有効か(公開済み API にバインドされているか)を診断します。

# Signature key: list APIs bound to a given signature key
hcloud APIG ListApisBindedToSignatureKeyV2 --cli-region={region} --instance_id={instance_id} --sign_id={sign_id}
# ACL policy: list APIs bound to a given ACL policy
hcloud APIG ListApisBindedToAclPolicyV2 --cli-region={region} --instance_id={instance_id} --acl_id={acl_id}
# Throttling policy: list APIs bound to a given throttling policy
hcloud APIG ListApisBindedToRequestThrottlingPolicyV2 --cli-region={region} --instance_id={instance_id} --throttle_id={throttle_id}
# Then confirm each bound API is actually published (non-empty publish_id):
hcloud APIG ListApisV2 --cli-region={region} --instance_id={instance_id} --id={api_id}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListApisBindedToSignatureKeyV2 --cli-region={region} --instance_id={instance_id} --sign_id={sign_id}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListApisBindedToAclPolicyV2 --cli-region={region} --instance_id={instance_id} --acl_id={acl_id}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListApisBindedToRequestThrottlingPolicyV2 --cli-region={region} --instance_id={instance_id} --throttle_id={throttle_id}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListApisV2 --cli-region={region} --instance_id={instance_id} --id={api_id}
パラメーター必須説明
--instance_idはいゲートウェイ ID
--sign_idはい(署名の有効性確認時)ListSignatureKeysV2 の署名キー ID
--acl_idはい(ACL の有効性確認時)ListAclStrategiesV2 の ACL ポリシー ID
--throttle_idいいえ(スロットリングの有効性確認時)ListRequestThrottlingPolicyV2 のスロットリングポリシー ID
ポリシータイプいいえsignature(デフォルト)/acl/throttling — エージェントが該当するバインド確認クエリを選択します

ポリシーの有効性ルール:ポリシーが有効なのは、少なくとも 1 つのバインド済み API が公開済み(空でない publish_id を持つ)である場合のみです。失敗経路を診断します。ポリシーは存在するがバインド済み API がない → API にバインドします。バインド済みだが API が未公開 → API を公開します。バインド済みで公開済み → ポリシーは有効です。一般的な回答ではなく、具体的な不足箇所を報告します。

管理 — インスタンスの作成(非同期、Running までポーリング)

huawei_create_apig_instance — 従量課金制の専用ゲートウェイを作成します。 この API は非同期です。作成には 5~15 分かかります。ListInstancesV2 をポーリングし、status == "Running" になるまで確認します。

# Run as a single line (no line continuations); always check CreateInstanceV2 --help first
hcloud APIG CreateInstanceV2 --cli-region={region} --instance_name={instance_name} --spec_id={spec_id} --vpc_id={vpc_id} --subnet_id={subnet_id} --security_group_id={security_group_id} --loadbalancer_provider={loadbalancer_provider} --available_zone_ids.1={available_zone_id}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG CreateInstanceV2 --cli-region={region} --instance_name={instance_name} --spec_id={spec_id} --vpc_id={vpc_id} --subnet_id={subnet_id} --security_group_id={security_group_id} --loadbalancer_provider={loadbalancer_provider} --available_zone_ids.1={available_zone_id}
パラメーター必須説明
--instance_nameいいえ*ゲートウェイ名(インスタンスの識別に必要)
--spec_idいいえ*BASIC(パブリックアクセスなし)/PROFESSIONAL(elb によるパブリックアクセス)
--vpc_id / --subnet_idいいえ*対象リージョンの VPC/サブネット
--security_group_idいいえ*セキュリティグループ(先に VPC サービスで作成してください)
--loadbalancer_providerいいえ*パブリックアクセスには elb、内部専用には lvs
--available_zone_ids.1いいえ*ap-southeast-3a のような AZ コード(UUID ではありません)
--enterprise_project_idいいえエンタープライズアカウントでは必須です。デフォルトプロジェクトには "0" を使用します

*KooCLI の現在のメタデータでは CreateInstanceV2 のパラメーターは省略可能とされていますが、spec_id、vpc_id、subnet_id、security_group_id、loadbalancer_provider、available_zone_ids を指定しないと APIG API はリクエストを拒否します。必ず指定してください。コマンドを組み立てる前に、必ず CreateInstanceV2 --help を確認してパラメーター名を確認してください。

作成後のポーリングループ:

while true; do
  status=$(skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListInstancesV2 --cli-region={region} --instance_id={instance_id} --cli-output=json | jq -r '.instances[0].status')
  [ "$status" = "Running" ] && break
  echo "instance status: $status, waiting 60s..."; sleep 60
done

最終状態は Running です(「SUCCESS」ではありません)。CreateSuccess などの状態は中間状態であり、インスタンスのプロビジョニングがまだ進行中であることを意味します。

管理 — Ingress EIP の追加

huawei_add_apig_ingress_eip — elb プロバイダーのゲートウェイでパブリックなインバウンドアクセスを有効にします(帯域幅は 5 Mbit/s 以上)。

# --bandwidth_charging_mode: bandwidth|traffic; --bandwidth_size: Mbit/s (min 5)
hcloud APIG AddIngressEipV2 --cli-region={region} --instance_id={instance_id} --bandwidth_charging_mode=bandwidth --bandwidth_size=5
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG AddIngressEipV2 --cli-region={region} --instance_id={instance_id} --bandwidth_charging_mode=bandwidth --bandwidth_size=5
パラメーター必須説明
--instance_idはいゲートウェイ ID
--bandwidth_charging_modeいいえbandwidth または traffic
--bandwidth_sizeいいえインバウンド帯域幅(Mbit/s、最小 5)

バインド後の検証:ListInstancesV2 の eip_address はすぐには表示されない場合があります(確認済み:成功から 8 分後も null のままでした)。これだけを唯一の根拠として頼らないでください。AddIngressEipV2 のレスポンス/タスク受け付け、再試行時に APIC.7711(「パブリックなインバウンドアクセスは有効です」)が返ること、または APIG コンソールの EIP 一覧で成功を確認してください。elb プロバイダーのインスタンスでのみ動作します。

管理 — API グループの作成

huawei_create_apig_api_group — API グループを作成します。

# --remark={remark} is optional
hcloud APIG CreateApiGroupV2 --cli-region={region} --instance_id={instance_id} --name={name}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG CreateApiGroupV2 --cli-region={region} --instance_id={instance_id} --name={name}
パラメーター必須説明
--instance_idはいゲートウェイ ID
--nameはいグループ名(3~255 文字。英字または数字で始まる)
--remarkいいえ説明
管理 — API の作成

huawei_create_apig_api — グループ内に API を作成します。

hcloud APIG CreateApiV2 --cli-region={region} --instance_id={instance_id} --group_id={group_id} --type={type} --name={name} --req_protocol={req_protocol} --req_method={req_method} --req_uri={req_uri} --auth_type={auth_type} --backend_type={backend_type}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG CreateApiV2 --cli-region={region} --instance_id={instance_id} --group_id={group_id} --type={type} --name={name} --req_protocol={req_protocol} --req_method={req_method} --req_uri={req_uri} --auth_type={auth_type} --backend_type={backend_type}
パラメーター必須説明
--instance_idはいゲートウェイ ID
--group_idはいAPI グループ ID
--typeはいAPI の種類。例:1(パブリック)
--nameはいAPI 名 — [a-zA-Z0-9_]+ のみ。ハイフンは使用できません
--req_protocolはいHTTPS / HTTP / BOTH
--req_methodはいGET / POST / PUT / DELETE / PATCH / HEAD / OPTIONS / ANY
--req_uriはいリクエスト URI。例:/demo
--auth_typeはいIAM / APP / NONE
--backend_typeはいHTTP / MOCK / FUNCTION / VPC_CHANNEL。既知の制限(KooCLI 7.2.12、検証済み): CreateApiV2 を使用して HTTP バックエンドの API を作成すると、妥当なパラメーターの組み合わせをすべて試しても APIG.2011 invalid req_protocol エラーが発生します。一方、MOCK / FUNCTION バックエンドは正常に作成できます。HTTP バックエンドが必要な場合は、APIG コンソールを使用するか、MOCK / FUNCTION バックエンドで API を作成してから、コンソールで切り替えてください。
--backend_api.req_uri / --backend_api.req_method / --backend_api.url_domainいいえbackend_type=HTTP の場合のバックエンドルーティング
--corsいいえCORS のプリフライトが必要な場合は true に設定します
管理 — API の更新

huawei_update_apig_api — 既存の API を変更します(認証モード、パス、バックエンドなど)。

hcloud APIG UpdateApiV2 --cli-region={region} --instance_id={instance_id} --group_id={group_id} --api_id={api_id} --type={type} --name={name} --req_protocol={req_protocol} --req_method={req_method} --req_uri={req_uri} --auth_type={auth_type} --backend_type={backend_type}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG UpdateApiV2 --cli-region={region} --instance_id={instance_id} --group_id={group_id} --api_id={api_id} --type={type} --name={name} --req_protocol={req_protocol} --req_method={req_method} --req_uri={req_uri} --auth_type={auth_type} --backend_type={backend_type}
パラメーター必須説明
--api_idはいAPI ID(ListApisV2 から取得)
--instance_id / --group_idはいゲートウェイ内で API を特定します
残りのパラメーターはいCreateApiV2 と同じ必須フィールド
管理 — API の公開/オフライン化

huawei_publish_apig_api — API を一括公開、またはオフライン化します (操作は BatchPublishOrOfflineApiV2。apis は 1 始まりの配列です)。

# 1) Get the real env ID first (RELEASE is only the environment NAME, NOT accepted); fill {env_id} / {api_id} from the query results:
hcloud APIG ListEnvironmentsV2 --cli-region={region} --instance_id={instance_id}
hcloud APIG BatchPublishOrOfflineApiV2 --cli-region={region} --instance_id={instance_id} --action=online --env_id={env_id} --apis.1={api_id}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG ListEnvironmentsV2 --cli-region={region} --instance_id={instance_id}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG BatchPublishOrOfflineApiV2 --cli-region={region} --instance_id={instance_id} --action=online --env_id={env_id} --apis.1={api_id}
パラメーター必須説明
--actionはいonline(公開)/ offline(オフライン化)
--env_idはい環境 ID(名前ではありません)。まず hcloud APIG ListEnvironmentsV2 --cli-region={region} --instance_id={instance_id} で照会し、返された env_id を使用してください。名前 RELEASE は APIG.3003 で拒否されます。
--apis.1はい*1 始まりの API ID 配列(最大 1000 件)。代わりに --group_id を使用することもできます。
--group_idいいえグループ内のすべての API を公開/オフライン化します(apis の代替)
--remarkいいえ説明
管理 — スロットリングポリシーの作成

huawei_create_apig_throttling_policy — リクエストのスロットリングポリシーを作成します (KooCLI APIG のヘルプ列挙に記載された操作名)。

hcloud APIG CreateRequestThrottlingPolicyV2 --cli-region={region} --instance_id={instance_id} --name={name} --time_unit={time_unit} --time_interval={time_interval} --api_call_limits={api_call_limits}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG CreateRequestThrottlingPolicyV2 --cli-region={region} --instance_id={instance_id} --name={name} --time_unit={time_unit} --time_interval={time_interval} --api_call_limits={api_call_limits}
パラメーター必須説明
--instance_idはいゲートウェイ ID
--nameはいポリシー名 — [a-zA-Z0-9_]+ のみ。ハイフンは使用できません(API 名と同じ制約です。「重要な警告 7」を参照)
--time_unitはいSECOND / MINUTE / HOUR / DAY
--time_intervalはい単位内の時間間隔
--api_call_limitsはい間隔内の API 呼び出し上限
--app_call_limitsいいえアプリごとのクォータ(ユーザーごとの制限に使用)
--user_call_limits / --ip_call_limitsいいえユーザーごと/IP ごとの制限
--enable_adaptive_controlいいえ適応型スロットリング(デフォルトは false)
管理 — 署名キーの作成

huawei_create_apig_signature_key — バインドされた API へのリクエストの認証に使用する署名キーを作成します(R2:プレビュー+確認):

# [W] 写操作 (WRITE): creates a signature key — R2: preview + explicit confirmation required
# --sign_type: hmac (default) | basic | public_key | aes; --sign_key/--sign_secret auto-generated when omitted
hcloud APIG CreateSignatureKeyV2 --cli-region={region} --instance_id={instance_id} --name={name}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG CreateSignatureKeyV2 --cli-region={region} --instance_id={instance_id} --name={name}
パラメーター必須説明
--instance_idはいゲートウェイ ID
--nameはいキー名 — 英字/数字/アンダースコアを使用できます。英字(または中国語)で始める必要があります
--sign_typeいいえhmac(デフォルト)/basic/public_key/aes
--sign_key / --sign_secretいいえ省略すると自動生成されます。値の規則はタイプによって異なります(重大な警告 10 を参照)
--sign_algorithmいいえaes-128-cfb/aes-256-cfb(aes タイプのみ)
管理 — アクセス制御ポリシーの作成

huawei_create_apig_access_control_policy — ACL ポリシー(IP またはアカウント名によるホワイトリスト/ブラックリスト)を作成します(R2:プレビュー+確認):

# [W] 写操作 (WRITE): creates an ACL policy — R2: preview + explicit confirmation required
# --acl_type: PERMIT (whitelist) | DENY (blacklist); --entity_type: IP | DOMAIN | DOMAIN_ID
hcloud APIG CreateAclStrategyV2 --cli-region={region} --instance_id={instance_id} --acl_name={name} --acl_type=PERMIT --entity_type=IP --acl_value={ip_addresses}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG CreateAclStrategyV2 --cli-region={region} --instance_id={instance_id} --acl_name={name} --acl_type=PERMIT --entity_type=IP --acl_value={ip_addresses}
パラメーター必須説明
--instance_idはいゲートウェイ ID
--acl_nameはいポリシー名 — 3~64 文字で、英字/数字(中国語も可)で始める必要があります
--acl_typeはいPERMIT(ホワイトリスト)/DENY(ブラックリスト)
--entity_typeはいIP/DOMAIN(アカウント名)/DOMAIN_ID(アカウント ID)
--acl_valueはいカンマ区切り。entity_type に応じて、IP(最大 100 個)またはアカウント名を指定します
削除 — インスタンス

huawei_delete_apig_instance — 専用ゲートウェイを削除します(R1:実行前にユーザーによる明示的な確認が必要です):

# [W] 写操作 (WRITE) — IRREVERSIBLE: deletes a dedicated gateway — R1: explicit confirmation required
hcloud APIG DeleteInstancesV2 --cli-region={region} --instance_id={instance_id}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG DeleteInstancesV2 --cli-region={region} --instance_id={instance_id}
パラメーター必須説明
--instance_idはい削除するゲートウェイ ID
削除 — API

huawei_delete_apig_api — グループから API を削除します(R1:実行前にユーザーによる明示的な確認が必要です):

# [W] 写操作 (WRITE) — IRREVERSIBLE: deletes an API — R1: explicit confirmation required
# Note: DeleteApiV2 takes --api_id + --instance_id only (--group_id is NOT a
# parameter of this operation; verified against `hcloud APIG DeleteApiV2 --help`)
hcloud APIG DeleteApiV2 --cli-region={region} --instance_id={instance_id} --api_id={api_id}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG DeleteApiV2 --cli-region={region} --instance_id={instance_id} --api_id={api_id}
パラメーター必須説明
--instance_idはいゲートウェイ ID
--api_idはい削除する API ID(ListApisV2 から取得)

API グループに API が残っている場合、そのグループは削除できません(APIG.3415)。まずこのアクションを使ってグループ内の各 API を削除し、その後グループを削除してください。

削除 — API グループ

huawei_delete_apig_api_group — API グループを削除します(R1:実行前にユーザーによる明示的な確認が必要です):

# [W] 写操作 (WRITE) — IRREVERSIBLE: deletes an API group — R1: explicit confirmation required
hcloud APIG DeleteApiGroupV2 --cli-region={region} --instance_id={instance_id} --group_id={group_id}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG DeleteApiGroupV2 --cli-region={region} --instance_id={instance_id} --group_id={group_id}
パラメーター必須説明
--instance_idはいゲートウェイ ID
--group_idはい削除する API グループ ID

グループを先に空にする必要があります: APIG は API が残っているグループの削除を拒否します(APIG.3415 The API group cannot be deleted because it contains APIs)。グループを削除する前に、huawei_delete_apig_api(DeleteApiV2)を使ってグループ内の API をすべて削除してください。すべての API が削除された後にのみ、DeleteApiGroupV2 が成功します。

削除 — 署名キー

huawei_delete_apig_signature_key — 署名キーを削除します(R1:実行前にユーザーによる明示的な確認が必要です)。キーを削除すると、そのバインド関係も削除されます。キーがバインドされていたすべての API で署名の検証が行われなくなります:

# [W] 写操作 (WRITE) — IRREVERSIBLE: deletes a signature key — R1: explicit confirmation required
hcloud APIG DeleteSignatureKeyV2 --cli-region={region} --instance_id={instance_id} --sign_id={sign_id}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG DeleteSignatureKeyV2 --cli-region={region} --instance_id={instance_id} --sign_id={sign_id}
パラメーター必須説明
--instance_idはいゲートウェイ ID
--sign_idはい削除する署名キー ID(ListSignatureKeysV2 から取得)
削除 — アクセス制御ポリシー

huawei_delete_apig_access_control_policy — ACL ポリシーを削除します(R1:実行前にユーザーによる明示的な確認が必要です)。ポリシーに API がバインドされていない必要があります(そうでない場合、DeleteAclV2 は失敗します):

# [W] 写操作 (WRITE) — IRREVERSIBLE: deletes an ACL policy — R1: explicit confirmation required
hcloud APIG DeleteAclV2 --cli-region={region} --instance_id={instance_id} --acl_id={acl_id}
skill-quality-cli run --skill-name huawei-cloud-apig-instance-management -- hcloud APIG DeleteAclV2 --cli-region={region} --instance_id={instance_id} --acl_id={acl_id}
パラメーター必須説明
--instance_idはいゲートウェイ ID
--acl_idはい削除する ACL ポリシー ID(ListAclStrategiesV2 から取得)

ACL ポリシーに API がまだバインドされている場合、DeleteAclV2 はエラーを返します。まず API のバインドを解除し(APIG コンソール/BatchDeleteAclV2)、その後、削除を再試行してください。

パラメーターの確認

  • すべての huawei_* コマンドは、実行前に hcloud APIG <Operation> --help で確認する必要があります。このスキルのパラメーター名は、KooCLI 7.2.12 の出力に照らして検証済みです。
  • 必須と任意のパラメーター:--cli-region は常に指定します(エージェントが設定します)。プロジェクト ID(--project_id)は、プロファイルまたはリージョンの親プロジェクトから自動的に解決されます。
  • 変更を伴う操作(Manage R2/Delete R1)では、実行前にコマンド全体を提示し、ユーザーの確認を得る必要があります。Delete R1 ではさらに、リソースが完全に削除されることについて明示的な確認が必要です。

KooCLI コマンド形式の標準

一般的な呼び出し形式は hcloud APIG <Operation> --cli-region=<region> [--key=value ...] です。 — これは形式の説明にすぎません。<...> と [...] はプレースホルダーであり、そのまま実行してはいけません。

機能説明例
サービス名APIG(CLI ヘルプでの表示名。メタデータディレクトリは apig)hcloud APIG ListInstancesV2 --cli-region={region}
操作名PascalCase。KooCLI APIG ヘルプの出力に照らして検証済みListInstancesV2
リージョン--cli-region=<value>--cli-region=cn-north-4
単純なパラメーター--key=value--instance_id=xxx
インデックス付き配列パラメーター--key.N=value(1 始まり)--apis.1=xxx
ネストされたオブジェクトパラメーター--key.sub=value--backend_api.req_uri=/demo

ツールパラメーターの検証(必須)

実行前にすべてのパラメーターを検証してください。不正な入力は直接拒否し、hcloud に渡してはいけません。

検証項目ルール
許可リストの列挙値ドキュメントに記載された値のセット(--cli-region、--status、--spec、--loadbalancer_provider、--protocol など)と完全に一致する必要があります。それ以外の値は拒否し、許可されている値を列挙します
型チェック数値パラメーター(--limit、--offset、--bandwidth、--port)は整数として解析できる必要があります。名前/ID パラメーターは [a-zA-Z0-9_-]+ に一致する文字列である必要があります(ハイフンは不可。重要な警告 #7 を参照)
不明なパラメーターの拒否hcloud APIG <Operation> --help にないパラメーターは、コマンドの実行前に拒否します

参考ドキュメント

  • references/cli-installation-guide.md — KooCLI のインストールと認証
  • references/iam-policies.md — APIG の最小権限 IAM ポリシー
  • references/verification-method.md — 各操作の検証方法
  • references/dataflow-diagram.md — Mermaid のデータフロー図
  • references/acceptance-criteria.md — このスキルの受け入れ基準

APIG のドキュメント:https://support.huaweicloud.com/apig/

コメント