Quiero transferir un connectionId o un token personalizado a la integración de enlaces de VPC como encabezado de mi API de WebSocket de Amazon API Gateway.
Descripción breve
Se requiere un connectionId para enviar una respuesta de devolución de llamada desde el backend de las API de WebSocket. De forma predeterminada, las API de WebSocket no transfieren el connectionId a la integración de enlaces de VPC.
Para transferir un connectionId o un token personalizado, utilice la consola de API Gateway y la Interfaz de la línea de comandos de AWS (AWS CLI) o use AWS CloudFormation.
Resolución
Nota: Si se muestran errores al ejecutar comandos de la AWS CLI, consulte Errores de solución de problemas de la AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.
Uso de la consola de API Gateway y la AWS CLI
Siga estos pasos:
-
Siga las instrucciones para crear un enlace de VPC de API REST y asociarlo a su equilibrador de carga de red.
-
Siga las instrucciones para configurar una integración de la API de WebSocket y crear un punto de enlace de integración privada del enlace de VPC.
-
Para recuperar el ID de integración, ejecute el comando get-integrations de la AWS CLI:
aws apigatewayv2 get-integrations --api-id <api-id>
-
Cree y guarde un archivo JSON denominado integration.json con el siguiente formato:
{
"ApiId": "<api-id>",
"IntegrationId": "<integration id retrieved from previous step>",
"RequestParameters": {
"integration.request.header.ConnectionId": "context.connectionId",
"integration.request.header.<header-key>": "route.request.body.<parameter>",
"integration.request.querystring.<querysting-key>": "'static value'"
}
}
-
Para actualizar la integración, ejecute el comando update-integration de la AWS CLI de forma similar a la siguiente:
aws apigatewayv2 update-integration --cli-input-json file://integration.json
-
Para aplicar estos cambios, siga las instrucciones para implementar la API de WebSocket.
Uso de CloudFormation
Si usa CloudFormation para administrar API Gateway, utilice el recurso AWS::ApiGatewayV2::Integration para configurar parámetros de solicitud similares a los siguientes:
Integration:
Type: AWS::ApiGatewayV2::Integration
Properties:
ApiId: !Ref websocket
ConnectionId: !Ref <VPC-Link-connection-id>
ConnectionType: VPC_LINK
IntegrationMethod: <HTTP method to backend >
IntegrationType: <HTTP_PROXY/HTTP>
IntegrationUri: "<endpoint-url>"
RequestParameters:
"integration.request.header.connectionId": "context.connectionId" #passing context variable 'connectionId' as ConnectionId header to backend
"integration.request.header.<header-key>": "route.request.body.<parameter>" #passing a request body parameter as header to backend
"integration.request.querystring.<querystring-key>": "'static value'" #passing static value as querystring to backend
Puedes usar la asignación de datos para asignar los datos de una solicitud de ruta a la integración de backend de enlaces de VPC. Para obtener más información, consulte Asignar datos de solicitud de ruta a parámetros de solicitud de integración.
Información relacionada
Integraciones de API de WebSocket en API Gateway