huawei-cloud-apig-instance-management について
`hcloud` CLIでHuawei Cloud APIGの専用インスタンスとAPIリソースを管理するスキルです。ゲートウェイ運用者向けに、インスタンス、API、制限ポリシー、アクセス制御の操作と診断を提供し、リスクに応じて事前確認や承認を求めます。
主な機能
- 01インスタンス・APIグループ・APIの照会
- 02APIの作成・更新・公開
- 03制限ポリシー・署名キー・ACLの管理
- 04パブリックアクセスと公開経路の分析
- 05リスク別の管理・削除制御
活用シーン
- 01APIGインスタンスと状態の確認
- 02APIの設定と変更の公開
- 03EIPのパブリックアクセスやポリシー効果の診断
- 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.mdcli-installation-guide.mddataflow-diagram.mdiam-policies.mdverification-method.mdscripts/ensure_cli.shscripts/cli/cli_entry.pycli_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 によってインストールされます)。
重大な注意事項
| # | 落とし穴 | 理由 |
|---|---|---|
| 1 | API グループはリージョンに固定されます | API グループを別のリージョンに移動することはできません。最初から対象のリージョンに作成してください。 |
| 2 | スロットリングのデフォルトは API 単位です | デフォルトのスロットリングポリシーは API ごとに適用されます。ユーザーごとの制限には、アプリレベルのクォータ(--app_call_limits)を使用してください。 |
| 3 | CORS は明示的に設定する必要があります | API で CORS を設定するまで、OPTIONS のプリフライトリクエストは失敗します(--cors=true)。 |
| 4 | BASIC 仕様にはパブリック IP がありません | パブリックアクセスには PROFESSIONAL と --loadbalancer_provider=elb を使用してください(lvs は内部アクセス専用です)。 |
| 5 | インスタンスの作成には 5~15 分かかります | 非同期で時間のかかる操作です。最終状態は Running です(「SUCCESS」ではありません)。ListInstancesV2 でポーリングし、status == "Running" になるまで待ってください。 |
| 6 | sl_domain は API グループの値です | インスタンスの値ではありません。CreateApiGroupV2 / ListApiGroupsV2 のレスポンスから取得してください。内部専用ドメインであり、パブリックインターネットからは NXDOMAIN になる可能性があります。パブリックアクセスには、インスタンスの eip_address を使用してください。 |
| 7 | API / スロットリングポリシー名にハイフンを含めることはできません | [a-zA-Z0-9_]+ のみ使用できます。ハイフンを含めると正規表現の検証に失敗します(CreateRequestThrottlingPolicyV2 でも確認済み、APIG.2011)。 |
| 8 | VPC パラメーターにはプレフィックスが必要です | KooCLI 7.x では --vpc.name=<n> / --subnet.vpc_id=<id> / --security_group.name=<n> を使用してください。 |
| 9 | AddIngressEipV2 が機能するのは 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 が自動生成します。 |
| 11 | API にバインドされた ACL ポリシーは削除できません | ポリシーが API にバインドされたままでは、DeleteAclV2 は失敗します(APIG エラー)。先にバインドを解除してください(BatchDeleteAclV2、または APP / コンソールで R1 削除アクションを実行)。 |
| 12 | ACL の acl_value の意味は entity_type によって異なります | IP の場合は IP / ホワイトリストです(最大 100 件、カンマ区切り)。DOMAIN の場合はアカウントの名前です(Web ドメインではありません)。DOMAIN_ID にはアカウント ID を使用します。 |
前提条件
- hcloud CLI をインストールし、認証してください。詳しくは
references/cli-installation-guide.mdを参照してください。 - 認証:環境変数による AK/SK(
HUAWEI_ACCESS_KEY/HUAWEI_SECRET_KEY、またはアクセスキーとシークレットキーを含む任意のHUAWEI*/HW*のペア)、またはconfigureコマンドで作成したローカル KooCLI プロファイル - リージョン:APIG はリージョンごとに異なります。必ず
--cli-region={region}(例:cn-north-4、ap-southeast-1)を指定してください。省略すると、プロファイルのリージョンが使用されます。 - IAM 権限:最小権限のポリシーについては
references/iam-policies.mdを参照してください。 - 確信が持てない操作を実行する前に、必ず
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/