mcpField
A
aliyun-vpc-manage

aliyun-vpc-manage

github.com/cinienceクラウド・DevOps39661 回インストール11 週間前に更新
リポジトリ

aliyun-vpc-manage について

aliyun-vpc-manageは、Alibaba Cloud OpenAPIとSDKでVirtual Private Cloudリソースを管理するスキルです。VPCやVSwitchなどのネットワークリソースの棚卸しとライフサイクル操作に対応し、リージョン単位で結果を確認します。

主な機能

  1. 01VPCとVSwitchの一覧表示
  2. 02VPCとVSwitchの作成・削除
  3. 03利用可能なゾーンの検索
  4. 04ルートテーブル・NATゲートウェイ・EIPの管理
  5. 05Describe APIによる操作結果の確認

活用シーン

  1. 01リージョン内のVPCネットワークの棚卸し
  2. 02新しい環境向けのVPCとVSwitchの作成
  3. 03VSwitch作成に使えるゾーンの確認
  4. 04ネットワークリソースを削除できない原因の調査

インストール

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

$npx skills add https://github.com/cinience/alicloud-skills --skill aliyun-vpc-manage

インストール後、Claude Code で/aliyun-vpc-manageを入力して読み込まれたか確認します。

同梱ファイル

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

agents/
openai.yaml
references/
api_overview.md
sources.md
scripts/
create_vpc.py
create_vswitch.py
delete_vpc.py
delete_vswitch.py
describe_zones.py
list_vpcs.py
list_vswitches.py

詳細

カテゴリ:サービス

仮想プライベートクラウド(VPC)

検証

mkdir -p output/aliyun-vpc-manage
for f in skills/network/vpc/aliyun-vpc-manage/scripts/*.py; do
  python3 -m py_compile "$f"
done
echo "py_compile_ok" > output/aliyun-vpc-manage/validate.txt

合格基準:コマンドが終了コード 0 で終了し、output/aliyun-vpc-manage/validate.txt が生成されます。

出力と証跡

  • list/summarize の出力は output/aliyun-vpc-manage/ の下に保存します。
  • 各証跡ファイルにコマンドの引数とリージョンの範囲を記録します。

Alibaba Cloud OpenAPI(RPC)と公式 SDK または OpenAPI Explorer を使用して VPC リソースを管理します。 すべての例と実行では Python SDK を優先してください。

前提条件

pip install alibabacloud_vpc20160428 alibabacloud_tea_openapi alibabacloud_credentials
  • AccessKey を準備します(最小権限を設定した RAM ユーザー/ロール)。
  • 正しいリージョンとエンドポイント(パブリック/VPC)を選択します。
  • VPC OpenAPI は RPC 形式です。手動署名を避けるため、SDK または OpenAPI Explorer の使用を推奨します。

API の動作に関する注意事項(VPC ドキュメントより)

  • DescribeVpcs と DescribeVSwitches は、PageNumber と PageSize によるページネーションに対応しています。
  • DescribeVpcs のリクエストには RegionId が必要です。
  • CreateVpc は VpcId をすぐに返しますが、VPC のステータスは Pending になります。Available になるまで DescribeVpcs でポーリングします。
  • CreateVSwitch には、ステータスが Available の既存 VPC と有効な ZoneId が必要です。
  • VPC に VSwitch、セキュリティグループ、その他のリソースが接続されている場合、DeleteVpc は失敗します。
  • VSwitch に ECS インスタンスやその他のリソースがある場合、DeleteVSwitch は失敗します。

ワークフロー

  1. リージョン、リソース識別子、実行する操作を確認します。
  2. references/api_overview.md で API グループと正確なオペレーション名を確認します。
  3. Python SDK(推奨)または OpenAPI Explorer で API を呼び出します。
  4. describe/list API で結果を確認します。
  5. インベントリや概要を繰り返し取得する必要がある場合は、scripts/ を使用し、出力を output/aliyun-vpc-manage/ の下に保存します。

SDK の優先順位

  1. Python SDK(推奨)
  2. OpenAPI Explorer
  3. その他の SDK(Python を使用できない場合のみ)
Python SDK クイックスタート(VPC の一覧表示)

仮想環境の使用を推奨します(システムへのインストール時に PEP 668 の制限を受けるのを避けるため)。

python3 -m venv .venv
. .venv/bin/activate
pip install alibabacloud_vpc20160428 alibabacloud_tea_openapi alibabacloud_credentials
from alibabacloud_vpc20160428.client import Client as Vpc20160428Client
from alibabacloud_vpc20160428 import models as vpc_models
from alibabacloud_tea_openapi import models as open_api_models


def create_client(region_id: str) -> Vpc20160428Client:
    config = open_api_models.Config(
        region_id=region_id,
        endpoint=f"vpc.{region_id}.aliyuncs.com",
    )
    return Vpc20160428Client(config)


def list_vpcs(region_id: str):
    client = create_client(region_id)
    resp = client.describe_vpcs(vpc_models.DescribeVpcsRequest(
        region_id=region_id,
        page_number=1,
        page_size=50,
    ))
    for v in resp.body.vpcs.vpc:
        print(v.vpc_id, v.vpc_name, v.cidr_block, v.status)


if __name__ == "__main__":
    list_vpcs("cn-hangzhou")
Python SDK スクリプト(インベントリ取得に推奨)
  • リージョン内の VPC を一覧表示:scripts/list_vpcs.py
  • リージョン内の VSwitch を一覧表示:scripts/list_vswitches.py
  • VPC を作成:scripts/create_vpc.py
  • VSwitch を作成:scripts/create_vswitch.py
  • VPC を削除:scripts/delete_vpc.py
  • VSwitch を削除:scripts/delete_vswitch.py
  • 利用可能なゾーンを照会:scripts/describe_zones.py

VPC ネットワークの設計原則

CIDR アドレスの計画
  • 各リージョンの業務用 VPC には個別の /16 ネットワークを使用し、リージョン間接続時の CIDR の競合を避けます。推奨する割り当て方法:
リージョン推奨 CIDR
cn-hangzhou10.1.0.0/16
cn-shanghai10.2.0.0/16
ap-southeast-110.3.0.0/16
cn-beijing10.4.0.0/16
その他のリージョン10.5~254.0.0/16
  • 大きすぎる CIDR(例:10.0.0.0/8)は使用しないでください。VSwitch の使用範囲がごく一部であっても同様です。大きなネットワーク範囲を使用すると、他の 10.x 範囲の VPC との CEN 経由の接続が妨げられます。
  • VSwitch には一律 /24 を使用します(使用可能な IP アドレスは 252 個)。ほとんどの業務に十分です。1 つのゾーンで大量のインスタンスが必要な場合は、/20(4092 IP アドレス)を使用できます。
  • 将来の拡張に備えて、ネットワーク範囲の間隔を確保します。たとえば、アプリケーション層には 0~9、データベース層には 10~19、ミドルウェアには 20~29 を使用します。
ゾーンと高可用性
  • 本番環境では少なくとも 2~3 個のゾーンを使用し、各ゾーンに少なくとも 1 つの VSwitch を配置します。
  • アプリケーション層とデータ層を別々のゾーンに配置し、単一 AZ の障害時にもサービスが中断しないようにします。
  • VSwitch を作成する前に、scripts/describe_zones.py でゾーンの一覧を確認します。ゾーン番号はリージョンによって異なります。
VSwitch の階層分離

業務機能に応じて VSwitch を分割すると、ACL とセキュリティグループによるネットワーク分離が容易になります。

10.x.0~9.0/24    → 应用层(Web/API 服务器)
10.x.10~19.0/24  → 数据层(RDS、Redis、MongoDB)
10.x.20~29.0/24  → 中间件(MQ、ES、Nacos)
10.x.30~39.0/24  → 管理层(跳板机、运维工具)
VSwitch の命名規則

推奨形式:vsw-{region简写}-{可用区}-{用途}

例:vsw-sg-a-app、vsw-hz-h-db、vsw-sh-e-middleware

リージョン間接続(CEN)
  • 接続する VPC の CIDR は、重複していてはなりません。
  • 自動的に作成される VPC(FC コンポーネントが作成するものなど)は通常 10.0.0.0/8 を使用するため、CEN に追加しないでください。追加すると、他のリージョンの 10.x 範囲と競合します。
  • 業務用 VPC の計画時には、CEN による接続の必要性をあらかじめ考慮し、最初から重複しない /16 ネットワークを使用します。
よくある落とし穴
問題原因解決策
CEN のアタッチに失敗し、CIDR の競合が表示される2 つの VPC で CIDR が重複している重複しない /16 ネットワークを使用して VPC を新規作成する
DeleteVpc が失敗するVPC 内に VSwitch/セキュリティグループ/NAT などのリソースが残っているすべての子リソースを削除してから、VPC を削除する
DeleteVSwitch が失敗するVSwitch 内に ECS/RDS などのインスタンスが残っているインスタンスを解放または移行する
VSwitch の作成時に ZoneId が無効と表示されるそのゾーンがサポートされていないか、売り切れているdescribe_zones.py を使って有効なゾーンを確認する
本番環境でデフォルト VPC を使用しているデフォルト VPC のネットワーク範囲は制御できず、他の VPC と適切に接続できない本番環境では必ず VPC を新規作成し、CIDR を計画する

一般的な操作の対応

  • VPC のライフサイクル:CreateVpc、DeleteVpc、ModifyVpcAttribute
  • VPC のクエリ:DescribeVpcs、DescribeVpcAttribute
  • VSwitch のライフサイクル:CreateVSwitch、DeleteVSwitch、ModifyVSwitchAttribute
  • VSwitch のクエリ:DescribeVSwitches、DescribeVSwitchAttributes
  • ルートテーブル:CreateRouteTable、DeleteRouteTable、DescribeRouteTables、CreateRouteEntry、DeleteRouteEntry
  • NAT ゲートウェイ:CreateNatGateway、DeleteNatGateway、DescribeNatGateways
  • EIP:AllocateEipAddress、AssociateEipAddress、UnassociateEipAddress、ReleaseEipAddress、DescribeEipAddresses
  • タグ:TagResources、UntagResources、ListTagResources

クエリのパターン

  • VPC の一覧表示:DescribeVpcs(フィルターに対応:VpcId、VpcName、IsDefault、ResourceGroupId)
  • VSwitch の一覧表示:DescribeVSwitches(フィルターに対応:VpcId、VSwitchId、ZoneId、VSwitchName、IsDefault)
  • 利用可能なゾーン:VSwitch の作成に有効なゾーンを調べるには、ECS の DescribeZones API を使用します

AccessKey の優先順位(必ず遵守し、README と整合させてください)

  1. 環境変数:ALIBABACLOUD_ACCESS_KEY_ID / ALIBABACLOUD_ACCESS_KEY_SECRET / ALIBABACLOUD_REGION_ID リージョンのポリシー:ALIBABACLOUD_REGION_ID は任意のデフォルト値です。設定されていない場合は、タスクに最も適したリージョンを選択してください。不明な場合はユーザーに確認してください。
  2. 共有設定ファイル:~/.alibabacloud/credentials(リージョンは引き続き環境変数から取得)
認証の設定(README に準拠)

環境変数:

export ALIBABACLOUD_ACCESS_KEY_ID="your-ak"
export ALIBABACLOUD_ACCESS_KEY_SECRET="your-sk"
export ALIBABACLOUD_REGION_ID="cn-hangzhou"

Alibaba Cloud SDK でもサポートされています:

export ALIBABA_CLOUD_ACCESS_KEY_ID="your-ak"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="your-sk"

レガシー互換性:

export ALICLOUD_ACCESS_KEY_ID="your-ak"
export ALICLOUD_ACCESS_KEY_SECRET="your-sk"

共有設定ファイル:

~/.alibabacloud/credentials

[default]
type = access_key
access_key_id = your-ak
access_key_secret = your-sk

API の検出

  • 製品コード:Vpc
  • デフォルトの API バージョン:2016-04-28
  • OpenAPI メタデータのエンドポイントを使用して API の一覧を表示し、スキーマを取得します(参考資料を参照)。

出力ポリシー

レスポンスまたは生成された成果物を保存する必要がある場合は、次の場所に保存してください: output/aliyun-vpc-manage/

参考資料

  • API の概要:references/api_overview.md
  • ソース:references/sources.md

コメント