更新时间:2023-05-09 GMT+08:00

创建VPC通道

功能介绍

在API网关中创建连接私有VPC资源的通道,并在创建API时将后端节点配置为使用这些VPC通道,以便API网关直接访问私有VPC资源。

每个用户最多创建30个VPC通道。

URI

POST /v2/{project_id}/apigw/instances/{instance_id}/vpc-channels

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID,获取方式请参见API参考的“附录 > 获取项目ID”章节。

instance_id

String

实例ID,在API网关控制台的“实例信息”中获取。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。

表3 请求Body参数

参数

是否必选

参数类型

描述

name

String

VPC通道的名称。

长度为3 ~ 64位的字符串,字符串由中文、英文字母、数字、中划线、下划线组成,且只能以英文或中文开头。

说明:

中文字符必须为UTF-8或者unicode编码。

port

Integer

VPC通道中主机的端口号。

取值范围1 ~ 65535。

balance_strategy

Integer

分发算法。

  • 1:加权轮询(wrr)

  • 2:加权最少连接(wleastconn)

  • 3:源地址哈希(source)

  • 4:URI哈希(uri)

缺省值:1

枚举值:

  • 1

  • 2

  • 3

  • 4

member_type

String

VPC通道的成员类型。

  • ip

  • ecs

缺省值:ecs

枚举值:

  • ip

  • ecs

type

Integer

vpc通道类型,默认为服务器类型。

  • 2:服务器类型

  • 3:微服务类型

缺省值:2

枚举值:

  • 2

  • 3

dict_code

String

VPC通道的字典编码

支持英文,数字,特殊字符(-_.)

暂不支持

最小长度:3

最大长度:64

member_groups

Array of MemberGroupCreate objects

VPC通道后端服务器组列表

members

Array of MemberInfo objects

VPC后端实例列表。

vpc_health_config

VpcHealthConfig object

健康检查详情。

microservice_info

MicroServiceCreate object

微服务详情。

表4 MemberGroupCreate

参数

是否必选

参数类型

描述

member_group_name

String

VPC通道后端服务器组名称

member_group_remark

String

VPC通道后端服务器组描述

member_group_weight

Integer

VPC通道后端服务器组权重值。

当前服务器组存在服务器且此权重值存在时,自动使用此权重值分配权重。

最小值:0

最大值:100

dict_code

String

VPC通道后端服务器组的字典编码

支持英文,数字,特殊字符(-_.)

暂不支持

最小长度:3

最大长度:64

microservice_version

String

VPC通道后端服务器组的版本,仅VPC通道类型为微服务时支持。

最大长度:64

microservice_port

Integer

VPC通道后端服务器组的端口号,仅VPC通道类型为微服务时支持。端口号为0时后端服务器组下的所有地址沿用原来负载端口继承逻辑。

最小值:0

最大值:65535

microservice_labels

Array of MicroserviceLabel objects

VPC通道后端服务器组的标签,仅VPC通道类型为微服务时支持。

表5 MicroserviceLabel

参数

是否必选

参数类型

描述

label_name

String

标签名称。

以字母或者数字开头和结尾,由字母、数字、连接符('-')、下划线('_')、点号('.')组成且63个字符之内。

最小长度:1

最大长度:63

label_value

String

标签值。

以字母或者数字开头和结尾,由字母、数字、连接符('-')、下划线('_')、点号('.')组成且63个字符之内。

最小长度:1

最大长度:63

表6 MemberInfo

参数

是否必选

参数类型

描述

host

String

后端服务器地址

后端实例类型为ip时必填

最大长度:64

weight

Integer

权重值。

允许您对后端服务进行评级,权重值越大,转发到该云服务的请求数量越多。

最小值:0

最大值:10000

is_backup

Boolean

是否备用节点。

开启后对应后端服务为备用节点,仅当非备用节点全部故障时工作。

实例需要升级到对应版本才支持此功能,若不支持请联系技术支持。

缺省值:false

member_group_name

String

后端服务器组名称。为后端服务地址选择服务器组,便于统一修改对应服务器组的后端地址。

status

Integer

后端服务器状态

  • 1:可用

  • 2:不可用

枚举值:

  • 1

  • 2

port

Integer

后端服务器端口

最小值:0

最大值:65535

ecs_id

String

后端云服务器的编号。

后端实例类型为ecs时必填,支持英文,数字,“-”,“_”,1 ~ 64字符。

最大长度:255

ecs_name

String

后端云服务器的名称。

后端实例类型为ecs时必填,支持汉字,英文,数字,“-”,“_”,“.”,1 ~ 64字符。

最大长度:64

表7 VpcHealthConfig

参数

是否必选

参数类型

描述

protocol

String

使用以下协议,对VPC中主机执行健康检查:

  • TCP

  • HTTP

  • HTTPS

枚举值:

  • TCP

  • HTTP

  • HTTPS

path

String

健康检查时的目标路径。protocol = http或https时必选

method

String

健康检查时的请求方法

缺省值:GET

枚举值:

  • GET

  • HEAD

port

Integer

健康检查的目标端口,缺少或port = 0时为VPC中主机的端口号。

若此端口存在非0值,则使用此端口进行健康检查。

最小值:0

最大值:65535

threshold_normal

Integer

正常阈值。判定VPC通道中主机正常的依据为:连续检查x成功,x为您设置的正常阈值。

最小值:2

最大值:10

threshold_abnormal

Integer

异常阈值。判定VPC通道中主机异常的依据为:连续检查x失败,x为您设置的异常阈值。

最小值:2

最大值:10

time_interval

Integer

间隔时间:连续两次检查的间隔时间,单位为秒。必须大于timeout字段取值。

最小值:5

最大值:300

http_code

String

检查目标HTTP响应时,判断成功使用的HTTP响应码。取值范围为100到599之前的任意整数值,支持如下三种格式:

  • 多个值,如:200,201,202

  • 一系列值,如:200-299

  • 组合值,如:201,202,210-299 protocol = http时必选

enable_client_ssl

Boolean

是否开启双向认证。若开启,则使用实例配置中的backend_client_certificate配置项的证书

缺省值:false

status

Integer

健康检查状态

  • 1:可用

  • 2:不可用

枚举值:

  • 1

  • 2

timeout

Integer

超时时间:检查期间,无响应的时间,单位为秒。必须小于time_interval字段取值。

最小值:2

最大值:30

表8 MicroServiceCreate

参数

是否必选

参数类型

描述

service_type

String

微服务类型:

  • CSE:CSE微服务注册中心

  • CCE:CCE云容器引擎

枚举值:

  • CSE

  • CCE

cse_info

MicroServiceInfoCSEBase object

CSE微服务详细信息,service_type为CSE时必填

cce_info

MicroServiceInfoCCEBase object

CCE云容器引擎详细信息,service_type为CCE时必填

表9 MicroServiceInfoCSEBase

参数

是否必选

参数类型

描述

engine_id

String

微服务引擎编号

最大长度:64

service_id

String

微服务编号

最大长度:64

表10 MicroServiceInfoCCEBase

参数

是否必选

参数类型

描述

cluster_id

String

云容器引擎集群编号

最大长度:64

namespace

String

命名空间

最大长度:64

workload_type

String

工作负载类型

  • deployment:无状态负载

  • statefulset:有状态负载

  • daemonset:守护进程集

枚举值:

  • deployment

  • statefulset

  • daemonset

app_name

String

APP名称

最大长度:64

响应参数

状态码: 201

表11 响应Body参数

参数

参数类型

描述

name

String

VPC通道的名称。

长度为3 ~ 64位的字符串,字符串由中文、英文字母、数字、中划线、下划线组成,且只能以英文或中文开头。

说明:

中文字符必须为UTF-8或者unicode编码。

port

Integer

VPC通道中主机的端口号。

取值范围1 ~ 65535。

balance_strategy

Integer

分发算法。

  • 1:加权轮询(wrr)

  • 2:加权最少连接(wleastconn)

  • 3:源地址哈希(source)

  • 4:URI哈希(uri)

缺省值:1

枚举值:

  • 1

  • 2

  • 3

  • 4

member_type

String

VPC通道的成员类型。

  • ip

  • ecs

缺省值:ecs

枚举值:

  • ip

  • ecs

type

Integer

vpc通道类型,默认为服务器类型。

  • 2:服务器类型

  • 3:微服务类型

缺省值:2

枚举值:

  • 2

  • 3

dict_code

String

VPC通道的字典编码

支持英文,数字,特殊字符(-_.)

暂不支持

最小长度:3

最大长度:64

create_time

String

VPC通道的创建时间

id

String

VPC通道的编号

status

Integer

VPC通道的状态。

  • 1:正常

  • 2:异常

枚举值:

  • 1

  • 2

member_groups

Array of MemberGroupInfo objects

后端云服务器组列表。

microservice_info

MicroServiceInfo object

微服务的响应对象

表12 MemberGroupInfo

参数

参数类型

描述

member_group_name

String

VPC通道后端服务器组名称

member_group_remark

String

VPC通道后端服务器组描述

member_group_weight

Integer

VPC通道后端服务器组权重值。

当前服务器组存在服务器且此权重值存在时,自动使用此权重值分配权重。

最小值:0

最大值:100

dict_code

String

VPC通道后端服务器组的字典编码

支持英文,数字,特殊字符(-_.)

暂不支持

最小长度:3

最大长度:64

microservice_version

String

VPC通道后端服务器组的版本,仅VPC通道类型为微服务时支持。

最大长度:64

microservice_port

Integer

VPC通道后端服务器组的端口号,仅VPC通道类型为微服务时支持。端口号为0时后端服务器组下的所有地址沿用原来负载端口继承逻辑。

最小值:0

最大值:65535

microservice_labels

Array of MicroserviceLabel objects

VPC通道后端服务器组的标签,仅VPC通道类型为微服务时支持。

member_group_id

String

VPC通道后端服务器组编号

create_time

String

VPC通道后端服务器组创建时间

update_time

String

VPC通道后端服务器组更新时间

表13 MicroserviceLabel

参数

参数类型

描述

label_name

String

标签名称。

以字母或者数字开头和结尾,由字母、数字、连接符('-')、下划线('_')、点号('.')组成且63个字符之内。

最小长度:1

最大长度:63

label_value

String

标签值。

以字母或者数字开头和结尾,由字母、数字、连接符('-')、下划线('_')、点号('.')组成且63个字符之内。

最小长度:1

最大长度:63

表14 MicroServiceInfo

参数

参数类型

描述

id

String

微服务编号

instance_id

String

实例编号

service_type

String

微服务类型:

  • CSE:CSE微服务注册中心

  • CCE:CCE云容器引擎

枚举值:

  • CSE

  • CCE

cse_info

MicroServiceInfoCSE object

CSE微服务详细信息

cce_info

MicroServiceInfoCCE object

CCE微服务详细信息

update_time

String

微服务更新时间

create_time

String

微服务创建时间

表15 MicroServiceInfoCSE

参数

参数类型

描述

engine_id

String

微服务引擎编号

最大长度:64

service_id

String

微服务编号

最大长度:64

engine_name

String

微服务引擎名称

service_name

String

微服务名称

register_address

String

注册中心地址

cse_app_id

String

微服务所属的应用

version

String

微服务的版本,已废弃,通过后端服务器组中的版本承载。

最大长度:64

表16 MicroServiceInfoCCE

参数

参数类型

描述

cluster_id

String

云容器引擎集群编号

最大长度:64

namespace

String

命名空间

最大长度:64

workload_type

String

工作负载类型

  • deployment:无状态负载

  • statefulset:有状态负载

  • daemonset:守护进程集

枚举值:

  • deployment

  • statefulset

  • daemonset

app_name

String

APP名称

最大长度:64

cluster_name

String

云容器引擎集群名称

状态码: 400

表17 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 401

表18 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 403

表19 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 404

表20 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

状态码: 500

表21 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

请求示例

  • 创建服务器类型的VPC通道

    {
      "balance_strategy" : 1,
      "member_type" : "ip",
      "name" : "VPC_demo",
      "port" : 22,
      "type" : 2,
      "vpc_health_config" : {
        "http_code" : "200",
        "path" : "/vpc/demo",
        "port" : 22,
        "protocol" : "http",
        "threshold_abnormal" : 5,
        "threshold_normal" : 2,
        "time_interval" : 10,
        "timeout" : 5,
        "enable_client_ssl" : false
      },
      "member_groups" : [ {
        "member_group_name" : "test",
        "member_group_weight" : 1,
        "member_group_remark" : "remark"
      }, {
        "member_group_name" : "default",
        "member_group_weight" : 2,
        "member_group_remark" : "remark"
      } ],
      "members" : [ {
        "host" : "192.168.0.5",
        "weight" : 1,
        "member_group_name" : "test"
      }, {
        "host" : "192.168.1.124",
        "weight" : 2,
        "member_group_name" : "default"
      } ]
    }
  • 创建微服务类型的VPC通道

    {
      "balance_strategy" : 1,
      "member_type" : "ip",
      "name" : "VPC_demo",
      "port" : 22,
      "type" : 3,
      "vpc_health_config" : {
        "http_code" : "200",
        "path" : "/vpc/demo",
        "port" : 22,
        "protocol" : "http",
        "threshold_abnormal" : 5,
        "threshold_normal" : 2,
        "time_interval" : 10,
        "timeout" : 5,
        "enable_client_ssl" : false
      },
      "member_groups" : [ {
        "member_group_name" : "test",
        "member_group_weight" : 1,
        "member_group_remark" : "remark",
        "microservice_version" : "v1",
        "microservice_port" : 80
      }, {
        "member_group_name" : "default",
        "member_group_weight" : 2,
        "member_group_remark" : "remark",
        "microservice_version" : "v2",
        "microservice_port" : 80,
        "microservice_labels" : [ {
          "label_name" : "cluster_id",
          "label_value" : "c429700c-5dc4-482a-9c0e-99f6c0635113"
        } ]
      } ],
      "members" : [ {
        "host" : "192.168.0.5",
        "weight" : 1,
        "member_group_name" : "test"
      }, {
        "host" : "192.168.1.124",
        "weight" : 2,
        "member_group_name" : "default"
      } ],
      "microservice_info" : {
        "service_type" : "CCE",
        "cce_info" : {
          "cluster_id" : "ab1485b4f91b45abbcd560be591f7309",
          "namespace" : "default",
          "workload_type" : "deployment",
          "app_name" : "testapp"
        }
      }
    }

响应示例

状态码: 201

Created

  • 示例 1

    {
      "name" : "VPC_demo",
      "id" : "105c6902457144a4820dff8b1ad63331",
      "balance_strategy" : 1,
      "dict_code" : "",
      "create_time" : "2020-07-23T07:11:57.244829604Z",
      "member_type" : "ip",
      "port" : 22,
      "status" : 1,
      "member_groups" : [ {
        "member_group_id" : "c1ce135c705c4066853a0460b318fe16",
        "member_group_name" : "test",
        "member_group_weight" : 1,
        "member_group_remark" : "remark",
        "create_time" : "2020-07-23T07:11:57.244829604Z",
        "update_time" : "2020-07-23T07:11:57.244829604Z",
        "microservice_version" : "",
        "microservice_port" : 0
      }, {
        "member_group_id" : "c1ce135c705c4066853a0460b318fe17",
        "member_group_name" : "default",
        "member_group_weight" : 2,
        "member_group_remark" : "remark",
        "create_time" : "2020-07-23T07:11:57.244829604Z",
        "update_time" : "2020-07-23T07:11:57.244829604Z",
        "microservice_version" : "",
        "microservice_port" : 0
      } ],
      "type" : 2,
      "microservice_info" : {
        "id" : "",
        "instance_id" : "",
        "service_type" : "",
        "cse_info" : {
          "cse_app_id" : "",
          "engine_id" : "",
          "engine_name" : "",
          "register_address" : "",
          "service_id" : "",
          "service_name" : ""
        },
        "cce_info" : {
          "cluster_id" : "",
          "cluster_name" : "",
          "namespace" : "",
          "workload_type" : "",
          "app_name" : ""
        },
        "create_time" : "",
        "update_time" : ""
      }
    }
  • 示例 2

    {
      "name" : "VPC_demo",
      "id" : "105c6902457144a4820dff8b1ad63331",
      "balance_strategy" : 1,
      "dict_code" : "",
      "create_time" : "2020-07-23T07:11:57.244829604Z",
      "member_type" : "ip",
      "port" : 22,
      "status" : 1,
      "member_groups" : [ {
        "member_group_id" : "c1ce135c705c4066853a0460b318fe16",
        "member_group_name" : "test",
        "member_group_weight" : 1,
        "member_group_remark" : "remark",
        "create_time" : "2020-07-23T07:11:57.244829604Z",
        "update_time" : "2020-07-23T07:11:57.244829604Z",
        "microservice_version" : "v1",
        "microservice_port" : 80
      }, {
        "member_group_id" : "c1ce135c705c4066853a0460b318fe17",
        "member_group_name" : "default",
        "member_group_weight" : 2,
        "member_group_remark" : "remark",
        "create_time" : "2020-07-23T07:11:57.244829604Z",
        "update_time" : "2020-07-23T07:11:57.244829604Z",
        "microservice_version" : "v2",
        "microservice_port" : 80,
        "microservice_labels" : [ {
          "label_name" : "cluster_id",
          "label_value" : "c429700c-5dc4-482a-9c0e-99f6c0635113"
        } ]
      } ],
      "type" : 3,
      "microservice_info" : {
        "id" : "9483afa235be45158a70c19ab817ac65",
        "instance_id" : "eddc4d25480b4cd6b512f270a1b8b341",
        "service_type" : "CCE",
        "cse_info" : {
          "cse_app_id" : "",
          "engine_id" : "",
          "engine_name" : "",
          "register_address" : "",
          "service_id" : "",
          "service_name" : ""
        },
        "cce_info" : {
          "cluster_id" : "ab1485b4f91b45abbcd560be591f7309",
          "cluster_name" : "cce-test",
          "namespace" : "default",
          "workload_type" : "deployment",
          "app_name" : "testapp"
        },
        "create_time" : "2020-07-23T07:11:57.244829604Z",
        "update_time" : "2020-07-23T07:11:57.244829604Z"
      }
    }

状态码: 400

Bad Request

{
  "error_code" : "APIG.2001",
  "error_msg" : "The request parameters must be specified, parameter name:members"
}

状态码: 401

Unauthorized

{
  "error_code" : "APIG.1002",
  "error_msg" : "Incorrect token or token resolution failed"
}

状态码: 403

Forbidden

{
  "error_code" : "APIG.1005",
  "error_msg" : "No permissions to request this method"
}

状态码: 404

Not Found

{
  "error_code" : "APIG.3030",
  "error_msg" : "The instance does not exist;id:eddc4d25480b4cd6b512f270a1b8b341"
}

状态码: 500

Internal Server Error

{
  "error_code" : "APIG.9999",
  "error_msg" : "System error"
}

状态码

状态码

描述

201

Created

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

500

Internal Server Error

错误码

请参见错误码