本文操作示例介绍如何使用Alibaba Cloud SDK for Python创建和删除专有网络VPC(Virtual Private Cloud)与交换机vSwitch。
在使用Alibaba Cloud SDK for Python前,您需要完成以下准备工作:
您需要一个阿里云账号和访问密钥(AccessKey)。 请在阿里云控制台中的
AccessKey管理页面
上创建和查看您的AccessKey。
确保您已经安装了Alibaba Cloud SDK for Python,请参见
aliyun-python-sdk-vpc 3.0.25
。
下载阿里云专有网络Python SDK场景示例的
VPC Python Example库
。
setup.py
所在的目录,执行以下命令,完成环境初始化配置。
python setup.py install
在下载的SDK目录中,打开
aliyun-openapi-python-sdk-examples\sdk_examples\examples\vpc
文件夹。
使用代码编辑工具打开
vpc_quick_start.py
文件,根据实际情况配置相关参数,保存退出。
完整代码示例如下:
#encoding=utf-8
import sys
import json
import time
from aliyunsdkcore.acs_exception.exceptions import ServerException, ClientException
from aliyunsdkvpc.request.v20160428 import CreateVpcRequest
from aliyunsdkvpc.request.v20160428 import CreateVSwitchRequest
from aliyunsdkvpc.request.v20160428 import DeleteVSwitchRequest
from aliyunsdkvpc.request.v20160428 import DeleteVpcRequest
from aliyunsdkvpc.request.v20160428 import DescribeVSwitchAttributesRequest
from aliyunsdkvpc.request.v20160428 import DescribeVpcAttributeRequest
from aliyunsdkcore.client import AcsClient
class VpcQuickStart(object):
def __init__(self, client):
self.client = client
self.TIME_DEFAULT_OUT = 15
self.DEFAULT_TIME = 1
def check_status(self,time_default_out, default_time, func, check_status, id):
for i in range(time_default_out):
time.sleep(default_time)
status = func(id)
if status == check_status:
return True
return False
def create_vpc(self):
request = CreateVpcRequest.CreateVpcRequest()
response = self.client.do_action_with_exception(request)
response_json = json.loads(response)
# 判断VPC状态是否可用
if self.check_status(self.TIME_DEFAULT_OUT, self.DEFAULT_TIME,
self.describe_vpc_status,
"Available", response_json['VpcId']):
return response_json
except ServerException as e:
print(e)
except ClientException as e:
print(e)
def delete_vpc(self, params):
request = DeleteVpcRequest.DeleteVpcRequest()
# 要删除的VPC的ID
request.set_VpcId(params['vpc_id'])
response = self.client.do_action_with_exception(request)
response_json = json.loads(response)
return response_json
except ServerException as e:
print(e)
except ClientException as e:
print(e)
def describe_vpc_attribute(self, vpc_id):
request = DescribeVpcAttributeRequest.DescribeVpcAttributeRequest()
# 要查询的VPC的ID
request.set_VpcId(vpc_id)
response = self.client.do_action_with_exception(request)
response_json = json.loads(response)
return response_json
except ServerException as e:
print(e)
except ClientException as e:
print(e)
def describe_vpc_status(self, vpc_id):
response = self.describe_vpc_attribute(vpc_id)
return response["Status"]
def create_vswitch(self, params):
request = CreateVSwitchRequest.CreateVSwitchRequest()
# 交换机所属区的ID,您可以通过调用DescribeZones接口获取地域ID
request.set_ZoneId(params['zone_id'])
# 交换机所属的VPC的ID
request.set_VpcId(params['vpc_id'])
# 交换机的网段
request.set_CidrBlock(params['cidr_block'])
response = self.client.do_action_with_exception(request)
response_json = json.loads(response)
# 判断交换机状态是否可用
if self.check_status(self.TIME_DEFAULT_OUT, self.DEFAULT_TIME,
self.describe_vswitch_status,
"Available", response_json['VSwitchId']):
return response_json
except ServerException as e:
print(e)
except ClientException as e:
print(e)
def describe_vswitch_attribute(self, vswitch_id):
request = DescribeVSwitchAttributesRequest.DescribeVSwitchAttributesRequest()
request.set_VSwitchId(vswitch_id)
response = self.client.do_action_with_exception(request)
response_json = json.loads(response)
return response_json
except ServerException as e:
print(e)
except ClientException as e:
print(e)
def describe_vswitch_status(self, vswitch_id):
response = self.describe_vswitch_attribute(vswitch_id)
return response["Status"]
def delete_vswitch(self, params):
request = DeleteVSwitchRequest.DeleteVSwitchRequest()
# 要删除的交换机的ID
request.set_VSwitchId(params['vswitch_id'])
response = self.client.do_action_with_exception(request)
response_json = json.loads(response)
# 判断交换机是否被删除成功
if self.check_status(self.TIME_DEFAULT_OUT, self.DEFAULT_TIME * 5,
self.describe_vswitch_status,
'', params['vswitch_id']):
return response_json
except ServerException as e:
print(e)
except ClientException as e:
print(e)
if __name__ == "__main__":
client = AcsClient('accessKeyId','accessSecret','cn-zhangjiakou',timeout = 35)
vpc_quick_start = VpcQuickStart(client)
params = {}
params['zone_id'] = "cn-zhangjiakou-b"
params['cidr_block'] = "172.16.0.0/16"
# 创建vpc
vpc_json = vpc_quick_start.create_vpc()
print("---------------------------create_vpc---------------------------")
print(vpc_json)
# 创建vSwitch
params['vpc_id'] = vpc_json['VpcId']
vswitch_json = vpc_quick_start.create_vswitch(params)
print("---------------------------create_vswitch---------------------------")
print(vswitch_json)
# 删除vSwitch
params['vswitch_id'] = vswitch_json['VSwitchId']
vswitch_json = vpc_quick_start.delete_vswitch(params)
print("---------------------------delete_vswitch---------------------------")
print(vswitch_json)
# 删除vpc
vpc_json = vpc_quick_start.delete_vpc(params)
print("---------------------------delete_vpc---------------------------")
print(vpc_json)
进入
vpc_quick_start.py
所在的目录,执行如下命令,运行创建和删除VPC与vSwitch示例。
python vpc_quick_start.py
---------------------------create_vpc---------------------------
"ResourceGroupId": "rg-acfmxazmq1h****",
"RouteTableId": "vtb-8vbf9ud7xrcn9mh1q****",
"VRouterId": "vrt-8vb1qjnxcm03nm1hq****",
"VpcId": "vpc-8vb67v4ozd8wf1mhq****",
"RequestId": "5052F988-75CC-46AD-A1A6-0E9E445BD0D5"
---------------------------create_vswitch---------------------------
"VSwitchId": "vsw-8vbqn2at0kljjmn3a****",
"RequestId": "0BA1ABF7-21CF-4460-9A86-0BB783886E58"
---------------------------delete_vswitch---------------------------
"RequestId": "D691F04B-A6EE-49A7-A434-4A45DD3AA0B8"
---------------------------delete_vpc---------------------------
"RequestId": "4570F816-AB8D-45EA-8913-6AE787C1632C"