Creación de un servicio de punto de conexión de VPC
Función
Esta API se utiliza para crear un servicio de punto de conexión de VPC. Otros usuarios pueden crear un punto de conexión de VPC para conectarse al servicio de punto de conexión de VPC.
Nota: Esta API es asincrónica. Si se realiza correctamente, se devuelve el código de estado 200, que indica que la solicitud se ha entregado correctamente. El sistema tarda de 1 a 2 minutos en aprovisionar un servicio de punto de conexión de VPC. Puede ver el resultado de la creación consultando los detalles del servicio de punto de conexión de VPC.
Método de invocación
Para obtener más información, consulte Invocación a las API.
URI
POST /v1/{project_id}/vpc-endpoint-services
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
project_id |
Sí |
String |
ID del proyecto. Para obtener detalles sobre cómo obtener el ID de proyecto, consulte Obtención de un ID de proyecto. Mínimo: 1 Máximo: 64 |
Parámetros de solicitud
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
X-Auth-Token |
Sí |
String |
Especifica el token de usuario. Es una respuesta a la API para obtener un token de usuario. Esta API es la única que no requiere autenticación. El valor de X-Subject-Token en el encabezado de respuesta es el valor de token. |
Content-Type |
No |
String |
Especifica el tipo MIME del cuerpo de la solicitud. Se recomienda el valor application/json. Para las API utilizadas para cargar objetos o imágenes, el tipo MIME varía en función del tipo de flujo. Valor predeterminado: application/json |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
port_id |
Sí |
String |
Especifica el ID que identifica el recurso backend del servicio de punto de conexión de VPC. El ID está en formato UUID. El valor puede ser:
Mínimo: 1 Máximo: 64 |
service_name |
No |
String |
Especifica el nombre del servicio de punto de conexión de VPC. El nombre puede contener un máximo de 16 caracteres, incluidos letras, dígitos, guiones bajos (_) y guiones (-).
Mínimo: 0 Máximo: 16 |
vpc_id |
Sí |
String |
Especifica el ID de la VPC donde se encuentra el recurso backend del servicio de punto de conexión de la VPC. Para obtener más detalles, consulte el campo de id en la información de respuesta de la sección "Consulta de detalles de VPC" en la Referencia de las API de Virtual Private Cloud. Mínimo: 1 Máximo: 64 |
approval_enabled |
No |
Boolean |
Especifica si se requiere aprobación. ● false: No se requiere aprobación. El punto de conexión de VPC creada se encuentra en el estado aceptado por defecto. ● true: Se requiere la aprobación. El punto de conexión de VPC creado se encuentra en el estado de pendingAcceptance y solo puede ser utilizado después de ser aprobado por el usuario del servicio de punto de conexión de VPC. El valor predeterminado es true. Predeterminado: true |
service_type |
No |
String |
Especifica el tipo del servicio de punto de conexión de VPC. Solo sus servicios privados pueden configurarse en servicios de punto de conexión de VPC de interfaz. Existen dos tipos de servicios de punto de conexión de VPC: interfaz y gateway.
Predeterminado: interface |
server_type |
Sí |
String |
Especifica el tipo de recurso.
|
ports |
Sí |
Array of PortList objects |
Especifica los mapeos de puertos abiertos por el servicio de punto de conexión de VPC. No se permiten mapeos de puertos duplicados en el mismo servicio de punto de conexión de VPC. Si varios servicios de punto de conexión de VPC comparten un ID de puerto, las combinaciones de puertos y protocolos de servidor para todos los mapeos de puertos entre servicios de punto de conexión de VPC deben ser únicas. Se puede agregar un máximo de 200 mapeos de puertos a la vez. |
tcp_proxy |
No |
String |
Especifica si se va a transferir al servidor información del cliente, como direcciones IP de origen, números de puerto de origen e ID de marcadores. La información se puede enviar al servidor de las siguientes maneras:
Valor predeterminado: close |
tags |
No |
Array of TagList objects |
Lista de etiquetas de recursos. Se pueden agregar un máximo de 10 etiquetas a un servicio de punto de conexión de VPC. |
description |
No |
String |
Especifica el campo de descripción. El valor puede contener caracteres como letras y dígitos, pero no puede contener los signo menor que (<) ni signo mayor que (>). Mínimo: 0 Máximo: 512 |
enable_policy |
No |
Boolean |
Especifica si la política de punto de conexión de VPC está habilitada. ● false: no se puede configurar la política de punto de conexión de VPC. ● true: Se puede configurar la política de punto de conexión de VPC. El valor predeterminado es false. Predeterminado: false |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
client_port |
No |
Integer |
Especifica el puerto al que accederá un punto de conexión de VPC. Este puerto es provisto por el punto de conexión de VPC, lo que permite acceder al servicio de punto de conexión de VPC. Rango soportado: 1 a 65535. Mínimo: 1 Máximo: 65535 Mínimo: 1 Máximo: 65535 |
server_port |
No |
Integer |
Especifica el puerto para acceder al servicio de punto de conexión de VPC. Este puerto se asocia con recursos backend para brindar servicios de punto de conexión de VPC. Rango soportado: 1 a 65535 Mínimo: 1 Máximo: 65535 Mínimo: 1 Máximo: 65535 |
protocol |
No |
String |
Protocolo de mapeo de puertos. Se soporta TCP. Predeterminado: TCP |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
key |
No |
String |
Especifica la clave de etiqueta. Una clave de etiqueta contiene un máximo de 36 caracteres de Unicode. No puede quedar en blanco. No puede contener signos iguales (=), asteriscos (*), menos que signos (<), mayor que signos (>), barras invertidas (), comas (,), barras verticales (|), y barras (/), y los caracteres primero y último no pueden ser espacios. Mínimo: 1 Máximo: 36 |
value |
No |
String |
Especifica la clave de etiqueta. Un valor de etiqueta contiene un máximo de 43 caracteres y puede ser una cadena vacía. No puede contener signos iguales (=), asteriscos (*), menos que signos (<), mayor que signos (>), barras invertidas (), comas (,), barras verticales (|), y barras (/), y los caracteres primero y último no pueden ser espacios. Mínimo: 1 Máximo: 43 |
Parámetros de respuesta
Código de estado: 200
Parámetro |
Tipo |
Descripción |
---|---|---|
id |
String |
Especifica el ID único del servicio de punto de conexión de VPC. Mínimo: 1 Máximo: 64 |
port_id |
String |
Especifica el ID que identifica el recurso backend del servicio de punto de conexión de VPC. El ID está en formato UUID. El valor puede ser:
Mínimo: 1 Máximo: 64 |
service_name |
String |
Especifica el nombre del servicio de punto de conexión de VPC. Mínimo: 0 Máximo: 128 |
server_type |
String |
Especifica el tipo de recurso.
|
vpc_id |
String |
Especifica el ID de la VPC donde se encuentra el recurso backend del servicio de punto de conexión de la VPC. Mínimo: 1 Máximo: 64 |
pool_id |
String |
Especifica el ID del clúster del servicio de punto de conexión de VPC. |
approval_enabled |
Boolean |
Especifica si se requiere la aprobación de la conexión.
|
status |
String |
Especifica el estado del servicio de punto de conexión de VPC.
|
service_type |
String |
Especifica el tipo del servicio de punto de conexión de VPC. Existen dos tipos de servicios de punto de conexión de VPC: interfaz y gateway.
Mínimo: 1 Máximo: 16 |
created_at |
String |
Especifica cuándo se creó el servicio de punto de conexión de VPC. Se utiliza el formato de hora UTC AAAA-MMDDTHH:MM:SSZ. |
updated_at |
String |
Especifica cuándo se actualizó el servicio de punto de conexión de VPC. Se utiliza el formato de hora UTC AAAA-MMDDTHH:MM:SSZ. |
project_id |
String |
Especifica el ID del proyecto. Mínimo: 1 Máximo: 64 |
ports |
Array of PortList objects |
Especifica los mapeos de puertos abiertos para el servicio de punto de conexión de VPC. No se permiten mapeos de puertos duplicados en el mismo servicio de punto de conexión de VPC. Si varios servicios de punto de conexión de VPC comparten un port_id, debe ser único server_port o protocol, o ambos server_port y protocol de cada uno de estos servicios de punto de conexión. |
tcp_proxy |
String |
Especifica si se va a transferir al servidor información del cliente, como direcciones IP de origen, números de puerto de origen e ID de marcadores. La información se puede enviar al servidor de las siguientes maneras:
|
tags |
Array of TagList objects |
Especifica etiquetas de recursos. |
description |
String |
Especifica el campo de descripción. El valor puede contener caracteres como letras y dígitos, pero no puede contener signos menores que (<) ni mayores que signos (>). Mínimo: 0 Máximo: 512 |
enable_policy |
Boolean |
Especifica si la política de punto de conexión de VPC está habilitada.
|
Parámetro |
Tipo |
Descripción |
---|---|---|
client_port |
Integer |
Especifica el puerto al que accederá un punto de conexión de VPC. Este puerto es provisto por el punto de conexión de VPC, lo que permite acceder al servicio de punto de conexión de VPC. Rango soportado: 1 a 65535. Mínimo: 1 Máximo: 65535 Mínimo: 1 Máximo: 65535 |
server_port |
Integer |
Especifica el puerto para acceder al servicio de punto de conexión de VPC. Este puerto se asocia con recursos backend para brindar servicios de punto de conexión de VPC. Rango soportado: 1 a 65535 Mínimo: 1 Máximo: 65535 Mínimo: 1 Máximo: 65535 |
protocol |
String |
Protocolo de mapeo de puertos. Se soporta TCP. Predeterminado: TCP |
Parámetro |
Tipo |
Descripción |
---|---|---|
key |
String |
Especifica la clave de etiqueta. Una clave de etiqueta contiene un máximo de 36 caracteres de Unicode. No puede quedar en blanco. No puede contener signos iguales (=), asteriscos (*), menos que signos (<), mayor que signos (>), barras invertidas (), comas (,), barras verticales (|), y barras (/), y los caracteres primero y último no pueden ser espacios. Mínimo: 1 Máximo: 36 |
value |
String |
Especifica la clave de etiqueta. Un valor de etiqueta contiene un máximo de 43 caracteres y puede ser una cadena vacía. No puede contener signos iguales (=), asteriscos (*), menos que signos (<), mayor que signos (>), barras invertidas (), comas (,), barras verticales (|), y barras (/), y los caracteres primero y último no pueden ser espacios. Mínimo: 1 Máximo: 43 |
Ejemplo de las solicitudes
Creación de un servicio de punto de conexión de VPC de interfaz (establezca approval_enabled a false, service type a VM, client_port a 8080 y a 8081, server_port a 90 y a 80 y protocol a TCP)
POST https://{endpoint}/v1/{project_id}/vpc-endpoint-services { "port_id" : "4189d3c2-8882-4871-a3c2-d380272eed88", "vpc_id" : "4189d3c2-8882-4871-a3c2-d380272eed80", "approval_enabled" : false, "service_type" : "interface", "server_type" : "VM", "ports" : [ { "client_port" : 8080, "server_port" : 90, "protocol" : "TCP" }, { "client_port" : 8081, "server_port" : 80, "protocol" : "TCP" } ] }
Ejemplo de las respuestas
Código de estado: 200
El servidor procesó correctamente la solicitud.
{ "id" : "4189d3c2-8882-4871-a3c2-d380272eed83", "port_id" : "4189d3c2-8882-4871-a3c2-d380272eed88", "vpc_id" : "4189d3c2-8882-4871-a3c2-d380272eed80", "pool_id" : "5289d3c2-8882-4871-a3c2-d380272eed80", "status" : "available", "approval_enabled" : false, "service_name" : "test123", "service_type" : "interface", "server_type" : "VM", "project_id" : "6e9dfd51d1124e8d8498dce894923a0d", "created_at" : "2022-04-14T09:35:47Z", "ports" : [ { "client_port" : 8080, "server_port" : 90, "protocol" : "TCP" }, { "client_port" : 8081, "server_port" : 80, "protocol" : "TCP" } ] }
Ejemplo de código del SDK
El ejemplo de código del SDK es el siguiente.
Java
Creación de un servicio de punto de conexión de VPC de interfaz (establezca approval_enabled a false, service type a VM, client_port a 8080 y a 8081, server_port a 90 y a 80 y protocol a TCP)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
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.vpcep.v1.region.VpcepRegion; import com.huaweicloud.sdk.vpcep.v1.*; import com.huaweicloud.sdk.vpcep.v1.model.*; import java.util.List; import java.util.ArrayList; public class CreateEndpointServiceSolution { 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"); ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk); VpcepClient client = VpcepClient.newBuilder() .withCredential(auth) .withRegion(VpcepRegion.valueOf("cn-north-4")) .build(); CreateEndpointServiceRequest request = new CreateEndpointServiceRequest(); CreateEndpointServiceRequestBody body = new CreateEndpointServiceRequestBody(); List<PortList> listbodyPorts = new ArrayList<>(); listbodyPorts.add( new PortList() .withClientPort(8080) .withServerPort(90) .withProtocol(PortList.ProtocolEnum.fromValue("TCP")) ); listbodyPorts.add( new PortList() .withClientPort(8081) .withServerPort(80) .withProtocol(PortList.ProtocolEnum.fromValue("TCP")) ); body.withPorts(listbodyPorts); body.withServerType(CreateEndpointServiceRequestBody.ServerTypeEnum.fromValue("VM")); body.withServiceType("interface"); body.withApprovalEnabled(false); body.withVpcId("4189d3c2-8882-4871-a3c2-d380272eed80"); body.withPortId("4189d3c2-8882-4871-a3c2-d380272eed88"); request.withBody(body); try { CreateEndpointServiceResponse response = client.createEndpointService(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
Creación de un servicio de punto de conexión de VPC de interfaz (establezca approval_enabled a false, service type a VM, client_port a 8080 y a 8081, server_port a 90 y a 80 y protocol a TCP)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# coding: utf-8 from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkvpcep.v1.region.vpcep_region import VpcepRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkvpcep.v1 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.getenv("CLOUD_SDK_AK") sk = os.getenv("CLOUD_SDK_SK") credentials = BasicCredentials(ak, sk) \ client = VpcepClient.new_builder() \ .with_credentials(credentials) \ .with_region(VpcepRegion.value_of("cn-north-4")) \ .build() try: request = CreateEndpointServiceRequest() listPortsbody = [ PortList( client_port=8080, server_port=90, protocol="TCP" ), PortList( client_port=8081, server_port=80, protocol="TCP" ) ] request.body = CreateEndpointServiceRequestBody( ports=listPortsbody, server_type="VM", service_type="interface", approval_enabled=False, vpc_id="4189d3c2-8882-4871-a3c2-d380272eed80", port_id="4189d3c2-8882-4871-a3c2-d380272eed88" ) response = client.create_endpoint_service(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
Creación de un servicio de punto de conexión de VPC de interfaz (establezca approval_enabled a false, service type a VM, client_port a 8080 y a 8081, server_port a 90 y a 80 y protocol a TCP)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" vpcep "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpcep/v1" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpcep/v1/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/vpcep/v1/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") auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() client := vpcep.NewVpcepClient( vpcep.VpcepClientBuilder(). WithRegion(region.ValueOf("cn-north-4")). WithCredential(auth). Build()) request := &model.CreateEndpointServiceRequest{} clientPortPorts:= int32(8080) serverPortPorts:= int32(90) protocolPorts:= model.GetPortListProtocolEnum().TCP clientPortPorts1:= int32(8081) serverPortPorts1:= int32(80) protocolPorts1:= model.GetPortListProtocolEnum().TCP var listPortsbody = []model.PortList{ { ClientPort: &clientPortPorts, ServerPort: &serverPortPorts, Protocol: &protocolPorts, }, { ClientPort: &clientPortPorts1, ServerPort: &serverPortPorts1, Protocol: &protocolPorts1, }, } serviceTypeCreateEndpointServiceRequestBody:= "interface" approvalEnabledCreateEndpointServiceRequestBody:= false request.Body = &model.CreateEndpointServiceRequestBody{ Ports: listPortsbody, ServerType: model.GetCreateEndpointServiceRequestBodyServerTypeEnum().VM, ServiceType: &serviceTypeCreateEndpointServiceRequestBody, ApprovalEnabled: &approvalEnabledCreateEndpointServiceRequestBody, VpcId: "4189d3c2-8882-4871-a3c2-d380272eed80", PortId: "4189d3c2-8882-4871-a3c2-d380272eed88", } response, err := client.CreateEndpointService(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
Otro más
Para obtener un ejemplo de código del SDK de más lenguajes de programación, consulta la ficha Ejemplo de código en API Explorer. El ejemplo de código del SDK se puede generar automáticamente.
Códigos de estado
Código de estado |
Descripción |
---|---|
200 |
El servidor procesó correctamente la solicitud. |
Códigos de error
Consulte Códigos de error.