Use when managing Alibaba Cloud Virtual Private Cloud (VPC) via OpenAPI/SDK, including listing or creating VPCs and VSwitches, querying available zones, deleting VPC resources, managing route tables, and troubleshooting VPC network configurations.
Category: service
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
Pass criteria: command exits 0 and output/aliyun-vpc-manage/validate.txt is generated.
output/aliyun-vpc-manage/.Use Alibaba Cloud OpenAPI (RPC) with official SDKs or OpenAPI Explorer to manage VPC resources. Prefer the Python SDK for all examples and execution.
pip install alibabacloud_vpc20160428 alibabacloud_tea_openapi alibabacloud_credentials
DescribeVpcs and DescribeVSwitches support pagination via PageNumber + PageSize.DescribeVpcs requires RegionId in the request.CreateVpc returns VpcId immediately but VPC enters Pending status; poll with DescribeVpcs until Available.CreateVSwitch requires an existing VPC in Available status and a valid ZoneId.DeleteVpc fails if VPC still has VSwitches, security groups, or other resources attached.DeleteVSwitch fails if VSwitch still has ECS instances or other resources.references/api_overview.md.scripts/ and write outputs under output/aliyun-vpc-manage/.Virtual environment is recommended (avoid PEP 668 system install restrictions).
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")
scripts/list_vpcs.pyscripts/list_vswitches.pyscripts/create_vpc.pyscripts/create_vswitch.pyscripts/delete_vpc.pyscripts/delete_vswitch.pyscripts/describe_zones.py| 地域 | 推荐 CIDR |
|---|---|
| cn-hangzhou | 10.1.0.0/16 |
| cn-shanghai | 10.2.0.0/16 |
| ap-southeast-1 | 10.3.0.0/16 |
| cn-beijing | 10.4.0.0/16 |
| 更多地域 | 10.5~254.0.0/16 |
10.0.0.0/8),即使 VSwitch 只用了很小一部分。大网段会阻止与其他 10.x 段 VPC 通过 CEN 互联。scripts/describe_zones.py 查询可用区列表,不同地域的可用区编号不同。按业务功能对 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 → 管理层(跳板机、运维工具)
推荐格式:vsw-{region简写}-{可用区}-{用途}
示例:vsw-sg-a-app、vsw-hz-h-db、vsw-sh-e-middleware
10.0.0.0/8,不要将其加入 CEN,否则会与其他地域的 10.x 段冲突。| 问题 | 原因 | 解决方案 |
|---|---|---|
| CEN 挂载失败,提示 CIDR 冲突 | 两个 VPC 使用了重叠的 CIDR | 新建 VPC 使用不重叠的 /16 网段 |
| DeleteVpc 失败 | VPC 下仍有 VSwitch/安全组/NAT 等资源 | 先删除所有子资源,再删 VPC |
| DeleteVSwitch 失败 | VSwitch 下仍有 ECS/RDS 等实例 | 先释放或迁移实例 |
| 创建 VSwitch 报 ZoneId 无效 | 该可用区不支持或已售罄 | 用 describe_zones.py 查询有效可用区 |
| 默认 VPC 用于生产 | 默认 VPC 网段不可控,且无法与其他 VPC 合理互联 | 生产环境始终新建 VPC,规划好 CIDR |
CreateVpc, DeleteVpc, ModifyVpcAttributeDescribeVpcs, DescribeVpcAttributeCreateVSwitch, DeleteVSwitch, ModifyVSwitchAttributeDescribeVSwitches, DescribeVSwitchAttributesCreateRouteTable, DeleteRouteTable, DescribeRouteTables, CreateRouteEntry, DeleteRouteEntryCreateNatGateway, DeleteNatGateway, DescribeNatGatewaysAllocateEipAddress, AssociateEipAddress, UnassociateEipAddress, ReleaseEipAddress, DescribeEipAddressesTagResources, UntagResources, ListTagResourcesDescribeVpcs (supports filters: VpcId, VpcName, IsDefault, ResourceGroupId)DescribeVSwitches (supports filters: VpcId, VSwitchId, ZoneId, VSwitchName, IsDefault)DescribeZones API to find valid zones for VSwitch creationALIBABACLOUD_ACCESS_KEY_ID / ALIBABACLOUD_ACCESS_KEY_SECRET / ALIBABACLOUD_REGION_ID
Region policy: ALIBABACLOUD_REGION_ID is an optional default. If unset, decide the most reasonable region for the task; if unclear, ask the user.~/.alibabacloud/credentials (region still from env)Environment variables:
export ALIBABACLOUD_ACCESS_KEY_ID="your-ak"
export ALIBABACLOUD_ACCESS_KEY_SECRET="your-sk"
export ALIBABACLOUD_REGION_ID="cn-hangzhou"
Also supported by the Alibaba Cloud SDKs:
export ALIBABA_CLOUD_ACCESS_KEY_ID="your-ak"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="your-sk"
Legacy compatibility:
export ALICLOUD_ACCESS_KEY_ID="your-ak"
export ALICLOUD_ACCESS_KEY_SECRET="your-sk"
Shared config file:
~/.alibabacloud/credentials
[default]
type = access_key
access_key_id = your-ak
access_key_secret = your-sk
Vpc2016-04-28If you need to save responses or generated artifacts, write them under:
output/aliyun-vpc-manage/
references/api_overview.mdreferences/sources.md