
# 创建虚拟网关 - CreateVirtualGateway
#### 功能介绍
创建虚拟网关。
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-dc/zh-cn_topic_0055025302.html)。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-dc/dc_08_3000.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项              | 访问级别  | 资源类型（\*为必须） | 条件键                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 别名 | 依赖的授权项                                                                                                                                                                                                                                                                                                                                                                                        |
  |:---|:---|:---|:---|:---|:---|
  | dcaas:vgw:create | Write | vgw \*      | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | -  | - er:instances:get  - vpc:vpcs:get   |
  | dcaas:vgw:create | Write | vpc         | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | -  | - er:instances:get  - vpc:vpcs:get   |
  | dcaas:vgw:create | Write | instances   | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | -  | - er:instances:get  - vpc:vpcs:get   |
  | dcaas:vgw:create | Write | -           | - g:EnterpriseProjectId   - g:RequestTag/\<tag-key\>   - g:TagKeys    | -  | - er:instances:get  - vpc:vpcs:get   |
     
  
 
#### URI
POST /v3/{project_id}/dcaas/virtual-gateways
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                      |
|:---|:---|:---|:---|
| project_id | 是    | String | 租户项目ID 最小长度：**0** 最大长度：**36** |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | 用户Token。 获取Token，请参考《统一身份认证服务API参考》的"获取用户Token"章节。请求响应成功后在响应消息头中包含的"X-Subject-Token"的值即为Token值。 最小长度：**0** 最大长度：**10240** |
   
表3请求Body参数 
| 参数              | 是否必选 | 参数类型                                                                                                            | 描述         |
|:---|:---|:---|:---|
| virtual_gateway | 否    | [CreateVirtualGateway] object | 创建虚拟网关对象参数 |
   
 表4CreateVirtualGateway 
| 参数                    | 是否必选 | 参数类型                                                                                    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| vpc_id                | 是    | String                                                                                  | 虚拟网关接入的VPC的ID                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| name                  | 否    | String                                                                                  | 虚拟网关名称 最小长度：**0** 最大长度：**64**                                                                                                                                                                                                                                                                                         |
| description           | 否    | String                                                                                  | 虚拟网关的描述信息 最小长度：**0** 最大长度：**128**                                                                                                                                                                                                                                                                                     |
| local_ep_group        | 是    | Array of strings                                                                        | 虚拟网关到访问云上服务IPv4子网列表，通常是vpc的cidrs                                                                                                                                                                                                                                                                                                                                                                                                                                |
| local_ep_group_ipv6   | 否    | Array of strings                                                                        | 预留字段用于虚拟网关到访问云上服务IPv6子网列表，通常是vpc的cidrs                                                                                                                                                                                                                                                                                                                                                                                                                          |
| bgp_asn               | 否    | Integer                                                                                 | 虚拟网关本地的BGP自治域号(asn) 最小值：**1** 最大值：**4294967295**                                                                                                                                                                                                                                                                      |
| enterprise_project_id | 否    | String                                                                                  | **参数解释：** 实例所属企业项目ID。 **取值范围：** 最大长度36字节，带"-"连字符的UUID格式，或者是字符串"0"，"0"表示默认企业项目。 最小长度：**36** 最大长度：**36** |
| tags                  | 否    | Array of [Tag] objects | 标签信息 数组长度：**0 - 10**                                                                                                                                                                                                                                                                                                                                                                       |
   
 表5Tag 
| 参数    | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| key   | 是    | String | 标签键，取值可以包含任意语种字母、数字、空格，以及_.:=+-@特殊字符，但首尾不能含有空格，不能以_sys_开头。 最小长度：**1** 最大长度：**128** |
| value | 否    | String | 标签值，格式为取值可以包含任意语种字母、数字、空格，以及_.:/=+-@特殊字符。 最小长度：**0** 最大长度：**255**                  |
   
#### 响应参数
**状态码：201**
表6响应Body参数 
| 参数              | 参数类型                                                                                                 | 描述     |
|:---|:---|:---|
| virtual_gateway | [VirtualGateway] object | 虚拟网关对象 |
| request_id      | String                                                                                               | 操作请求ID |
   
 表7VirtualGateway 
| 参数                    | 参数类型                                                                                     | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|
| id                    | String                                                                                   | 虚拟网关的ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| vpc_id                | String                                                                                   | 虚拟网关接入的VPC的ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| tenant_id             | String                                                                                   | 实例所属项目ID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| name                  | String                                                                                   | 虚拟网关的名称                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| description           | String                                                                                   | 虚拟网关的描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| type                  | String                                                                                   | 虚拟网关类型：default                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| local_ep_group        | Array of strings                                                                         | 虚拟网关到访问云上服务IPv4子网列表，通常是vpc的cidrs                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| local_ep_group_ipv6   | Array of strings                                                                         | 预留字段用于虚拟网关到访问云上服务IPv6子网列表，通常是vpc的cidrs                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| admin_state_up        | Boolean                                                                                  | 管理状态：true或false                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| status                | String                                                                                   | 操作状态。取值范围： - ACTIVE：正常   - DOWN：不可用   - BUILD：开通中   - ERROR：异常   - PENDING_CREATE：创建中   - PENDING_UPDATE：修改中   - PENDING_DELETE：删除中    |
| bgp_asn               | Integer                                                                                  | 虚拟网关本地的BGP自治域号(asn)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| enterprise_project_id | String                                                                                   | **参数解释：** 实例所属企业项目ID。 **取值范围：** 最大长度36字节，带"-"连字符的UUID格式，或者是字符串"0"，"0"表示默认企业项目。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| device_id             | String                                                                                   | 归属的设备ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| redundant_device_id   | String                                                                                   | 归属的冗余设备ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| public_border_group   | String                                                                                   | 归属的可用区对应的边界组(public border group)，标识是否homezone局点。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| tags                  | Array of [Tag] objects | 标签信息                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   
 表8Tag 
| 参数    | 参数类型   | 描述                                                         |
|:---|:---|:---|
| key   | String | 标签键，取值可以包含任意语种字母、数字、空格，以及_.:=+-@特殊字符，但首尾不能含有空格，不能以_sys_开头。 |
| value | String | 标签值，格式为取值可以包含任意语种字母、数字、空格，以及_.:/=+-@特殊字符。                  |
   
#### 请求示例
- 创建一个接入虚拟私有云的虚拟网关，设置本地BGP ASN为64512，虚拟网关访问云专服务IPv4子网列表为192.168.1.0/24。
  ```
  POST https://{dc_endpoint}/v3/0605768a3300d5762f82c01180692873/dcaas/virtual-gateways
  {
    "virtual_gateway" : {
      "name" : "vgw-c7b22",
      "description" : "",
      "vpc_id" : "6592c28e-95d7-4b0a-9f61-004fdf03420c",
      "bgp_asn" : 64512,
      "local_ep_group" : [ "192.168.1.0/24" ]
    }
  }
  ```
  
 
#### 响应示例
**状态码：201**
Created
- 成功创建接入虚拟私有云的虚拟网关。
  ```
  {
    "virtual_gateway" : {
      "id" : "20082c1b-3c99-48d8-8e8c-116af5d7e9f0",
      "name" : "vgw-c7b22",
      "description" : "",
      "tenant_id" : "0605768a3300d5762f82c01180692873",
      "vpc_id" : "6592c28e-95d7-4b0a-9f61-004fdf03420c",
      "device_id" : "26.151.63.100",
      "redundant_device_id" : "26.152.128.20",
      "type" : "default",
      "status" : "ACTIVE",
      "admin_state_up" : true,
      "bgp_asn" : 64512,
      "local_ep_group" : [ "192.168.1.0/24" ],
      "enterprise_project_id" : "0",
      "public_border_group" : "center"
    },
    "request_id" : "765f7aaf8f2edd0e719de564ef72e2de"
  }
  ```
  
 
#### SDK代码示例
SDK代码示例如下。
- [Java]
  - 创建一个接入虚拟私有云的虚拟网关，设置本地BGP ASN为64512，虚拟网关访问云专服务IPv4子网列表为192.168.1.0/24。
    ```
    package com.huaweicloud.sdk.test;
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.dc.v3.region.DcRegion;
    import com.huaweicloud.sdk.dc.v3.*;
    import com.huaweicloud.sdk.dc.v3.model.*;
    import java.util.List;
    import java.util.ArrayList;
    public class CreateVirtualGatewaySolution {
        public static void main(String[] args) {
            // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
            // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
            String projectId = "{project_id}";
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    .withAk(ak)
                    .withSk(sk);
            DcClient client = DcClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(DcRegion.valueOf("<YOUR REGION>"))
                    .build();
            CreateVirtualGatewayRequest request = new CreateVirtualGatewayRequest();
            CreateVirtualGatewayRequestBody body = new CreateVirtualGatewayRequestBody();
            List<String> listVirtualGatewayLocalEpGroup = new ArrayList<>();
            listVirtualGatewayLocalEpGroup.add("192.168.1.0/24");
            CreateVirtualGateway virtualGatewaybody = new CreateVirtualGateway();
            virtualGatewaybody.withVpcId("6592c28e-95d7-4b0a-9f61-004fdf03420c")
                .withName("vgw-c7b22")
                .withDescription("")
                .withLocalEpGroup(listVirtualGatewayLocalEpGroup)
                .withBgpAsn(64512);
            body.withVirtualGateway(virtualGatewaybody);
            request.withBody(body);
            try {
                CreateVirtualGatewayResponse response = client.createVirtualGateway(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
    ```
    
   
- [Python]
  - 创建一个接入虚拟私有云的虚拟网关，设置本地BGP ASN为64512，虚拟网关访问云专服务IPv4子网列表为192.168.1.0/24。
    ```
    # coding: utf-8
    import os
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkdc.v3.region.dc_region import DcRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkdc.v3 import *
    if __name__ == "__main__":
        # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
        credentials = BasicCredentials(ak, sk, projectId)
        client = DcClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(DcRegion.value_of("<YOUR REGION>")) \
            .build()
        try:
            request = CreateVirtualGatewayRequest()
            listLocalEpGroupVirtualGateway = [
                "192.168.1.0/24"
            ]
            virtualGatewaybody = CreateVirtualGateway(
                vpc_id="6592c28e-95d7-4b0a-9f61-004fdf03420c",
                name="vgw-c7b22",
                description="",
                local_ep_group=listLocalEpGroupVirtualGateway,
                bgp_asn=64512
            )
            request.body = CreateVirtualGatewayRequestBody(
                virtual_gateway=virtualGatewaybody
            )
            response = client.create_virtual_gateway(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    ```
    
   
- [Go]
  - 创建一个接入虚拟私有云的虚拟网关，设置本地BGP ASN为64512，虚拟网关访问云专服务IPv4子网列表为192.168.1.0/24。
    ```
    package main
    import (
    "fmt"
    "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        dc "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dc/v3"
    "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dc/v3/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dc/v3/region"
    )
    func main() {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
        projectId := "{project_id}"
        auth, err := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            SafeBuild()
        if err != nil {
            fmt.Println(err)
            return
        }
        hcClient, err := dc.DcClientBuilder().
             WithRegion(region.ValueOf("<YOUR REGION>")).
             WithCredential(auth).
             SafeBuild()
        if err != nil {
            fmt.Println(err)
            return
        }
        client := dc.NewDcClient(hcClient)
        request := &model.CreateVirtualGatewayRequest{}
    var listLocalEpGroupVirtualGateway = []string{
            "192.168.1.0/24",
        }
    nameVirtualGateway:= "vgw-c7b22"
    descriptionVirtualGateway:= ""
    bgpAsnVirtualGateway:= int32(64512)
    virtualGatewaybody := &model.CreateVirtualGateway{
    VpcId: "6592c28e-95d7-4b0a-9f61-004fdf03420c",
    Name: &nameVirtualGateway,
    Description: &descriptionVirtualGateway,
    LocalEpGroup: listLocalEpGroupVirtualGateway,
    BgpAsn: &bgpAsnVirtualGateway,
    }
    request.Body = &model.CreateVirtualGatewayRequestBody{
    VirtualGateway: virtualGatewaybody,
    }
    response, err := client.CreateVirtualGateway(request)
    if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    ```
    
   
- [更多]
  更多编程语言的SDK代码示例，请参见[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/DC/sdk?api=CreateVirtualGateway)的代码示例页签，可生成自动对应的SDK代码示例。
#### 状态码
| 状态码 | 描述      |
|:---|:---|
| 201 | Created |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-dc/ErrorCode.html)。
