¿Cómo transfiero un connectionId o un token personalizado a la integración de enlaces de VPC como encabezado para las API de WebSocket de API Gateway?

3 minutos de lectura
0

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:

  1. Siga las instrucciones para crear un enlace de VPC de API REST y asociarlo a su equilibrador de carga de red.

  2. 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.

  3. Para recuperar el ID de integración, ejecute el comando get-integrations de la AWS CLI:

    aws apigatewayv2 get-integrations --api-id <api-id>
  4. 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'"
      }
    }
  5. 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
  6. 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

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 meses