すべてのプロダクト
Search
ドキュメントセンター

:VPCとvSwitchの作成と削除

最終更新日:Mar 11, 2024

このトピックでは、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

背景情報

このトピックのサンプルコードには、次の操作が含まれます。

  1. 中国 (張家口) リージョンにVPCを作成します。

  2. VPC で vSwitch を作成します。

  3. VPCを削除します。

  4. vSwitchを削除します。

手順

  1. ダウンロードしたsdkディレクトリにあるaliyun-openapi-python-SDK-examples\sdk_examples\examples\vpcフォルダーを開きます。

  2. コードエディターを使用して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)
    
  3. 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"
}