このトピックでは、Alibaba Cloud SDK for Pythonを使用して、仮想プライベートクラウド (VPC) およびvSwitchを作成および削除する方法について説明します。
前提条件
Alibaba Cloud SDK for Pythonを使用する前に、次の要件が満たされていることを確認してください。
- Alibaba CloudアカウントとAccessKeyペアが取得されます。 Alibaba Cloud管理コンソールの [セキュリティ管理] ページで、AccessKeyペアを作成して表示できます。
- Alibaba Cloud SDK for Pythonがインストールされています。
- VPC Pythonサンプルライブラリがダウンロードされます。 setup.pyファイルが保存されているディレクトリに移動し、次のコマンドを実行して環境を初期化します。
python setup.py install
背景情報
このトピックのサンプルコードには、次の操作が含まれます。
中国 (張家口) リージョンにVPCを作成します。
VPC で vSwitch を作成します。
VPCを削除します。
vSwitchを削除します。
手順
ダウンロードしたsdkディレクトリにあるaliyun-openapi-python-SDK-examples\sdk_examples\examples\vpcフォルダーを開きます。
コードエディターを使用してvpc_quick_start.pyファイルを開き、パラメーターを設定し、保存して終了します。
次のサンプルコードが表示されます。
# encoding=utf-8 インポートsys jsonのインポート インポート時間 alibabacloud_credentials.clientからCredClientとしてのインポートクライアント からaliyunsdkcore.acs_exception.exceptions import ServerException, ClientException aliyunsdkvpc.request.v20160428からCreateVpcRequestをインポート aliyunsdkvpc.request.v20160428からCreateVSwitchRequestをインポート aliyunsdkvpc.request.v20160428からDeleteVSwitchRequestをインポート aliyunsdkvpc.request.v20160428からDeleteVpcRequestをインポート aliyunsdkvpc.request.v20160428からDescribeVSwitchAttributesRequestをインポート aliyunsdkvpc.request.v20160428からDescribeVpcAttributeRequestをインポート aliyunsdkcore.clientインポートからAcsClient クラスVpcQuickStart (オブジェクト): def __init__(self, client): self.client=クライアント self.TIME_DEFAULT_OUT = 15 self.DEFAULT_TIME = 1 def check_status(self,time_default_out, default_time, func, check_status, id): 範囲内のi (time_default_out) の場合: time.sleep(default_time) status = func(id) if status == check_status: Trueを返す Falseを返す def create_vpc (自己): 試してみてください。 request = CreateVpcRequest.CreateVpcRequest() response = self.client.do_action_with_exception(request) response_json = json.loads (レスポンス) # VPCが使用可能状態かどうかを確認します。 self.check_status(self.TIME_DEFAULT_OUT、self.DEFAULT_TIME、 self.de scribe_vpc_status, "Available" 、response_json['VpcId']): response_jsonを返します except ServerException as e: プリント (e) except ClientException as e: プリント (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_jsonを返します except ServerException as e: プリント (e) except ClientException as e: プリント (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_jsonを返します except ServerException as e: プリント (e) except ClientException as e: プリント (e) def describe_vpc_status(self, vpc_id): 応答=self.de scribe_vpc_attribute(vpc_id) return response["ステータス"] def create_vswitch(self、params): 試してみてください。 request = CreateVSwitchRequest.CreateVSwitchRequest() # vSwitchが属するゾーンのID。 DescribeZones操作を呼び出して、ゾーンIDを照会できます。 request.set_ZoneId(params['zone_id']) # vSwitchが属するVPCのID。 request.set_VpcId(params['vpc_id']) # vSwitchのCIDRブロック。 request.set_CidrBlock(params['cidr_block']) response = self.client.do_action_with_exception(request) response_json = json.loads (レスポンス) # vSwitchが使用可能状態かどうかを確認します。 self.check_status(self.TIME_DEFAULT_OUT、self.DEFAULT_TIME、 self.de scribe_vswitch_status、 "Available" 、response_json['VSwitchId']): response_jsonを返します except ServerException as e: プリント (e) except ClientException as e: プリント (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_jsonを返します except ServerException as e: プリント (e) except ClientException as e: プリント (e) def describe_vswitch_status(self, vswitch_id): 応答=self.de scribe_vswitch_attribute(vswitch_id) return response["ステータス"] def delete_vswitch(self、params): 試してみてください。 request = DeleteVSwitchRequest.DeleteVSwitchRequest() # 削除するvSwitchのID。 request.set_VSwitchId(params['vswitch_id']) response = self.client.do_action_with_exception(request) response_json = json.loads (レスポンス) # vSwitchが削除されているかどうかを確認します。 if self.check_status(self.TIME_DEFAULT_OUT、self.DEFAULT_TIME * 5、 self.de scribe_vswitch_status、 ''、params['vswitch_id']): response_jsonを返します except ServerException as e: プリント (e) except ClientException as e: プリント (e) if __name__ == "__main__": # Alibaba CloudアカウントのAccessKeyペアには、すべてのAPI操作に対する権限があります。 セキュリティリスクを防ぐために、RAMユーザーとしてAPI操作を呼び出すか、ルーチンのO&Mを実行することを推奨します。 # AccessKey IDとAccessKey secretをプロジェクトコードに保存することはお勧めしません。 そうしないと、AccessKeyペアが漏洩し、リソースのセキュリティが侵害される可能性があります。 # この例では、AccessKeyペアはAlibaba Cloudが提供する資格情報を使用して取得されます。 ペアは、APIアクセスの認証を実装するために使用されます。 環境変数の設定方法の詳細については、「https://www.alibabacloud.com/help/alibaba-cloud-sdk-262060/latest/configure-credentials-378659. 」をご参照ください。 cred = CredClient() access_key_id = cred.get_access_key_id() access_key_secret = cred.get_access_key_secret() # Create an AcsClient instance. client = AcsClient(access_key_id, access_key_secret, '<YOUR-REGION-ID>') vpc_quick_start = VpcQuickStart (クライアント) params = {} params['zone_id'] = "cn-zhangjiakou-b" params['cidr_block'] = "172.16.0.0/16" # VPCを作成します。 vpc_json = vpc_quick_start.create_vpc() プリント ("--------------------------- create_vpc ---------------------------") プリント (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) プリント ("--------------------------- delete_vpc ---------------------------") プリント (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"
}