¿Cómo se puede transmitir un connectionId o un token personalizado a la integración del enlace de la VPC como encabezado para las API de WebSocket de Amazon API Gateway?

Actualización más reciente: 26-10-2022

Deseo transmitir un connectionId o un token personalizado a la integración del enlace de la VPC como un encabezado para la API de WebSocket de Amazon API Gateway. ¿Cómo se puede hacer esto?

Descripción breve

En el caso de las API de WebSocket, el connectionId es necesario para enviar una respuesta de devolución de llamada desde el backend. De forma predeterminada, las API de WebSocket no transmiten el ConnectionId a la integración del enlace de la VPC.

Resolución

Utilizar la consola de Amazon API Gateway y AWS CLI

Nota: Si se producen errores al ejecutar los comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de que utiliza la versión más reciente de AWS CLI.

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

2.    Siga las instrucciones para configurar una integración de la API de WebSocket y crear un punto de conexión de integración privado de enlace de la VPC.

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

aws apigatewayv2 get-integrations --api-id <api-id>

4.    Cree y guarde un archivo JSON llamado integration.json con el siguiente formato:

{
    "ApiId": "<api-id>",
    "IntegrationId": "<integration id retrieved from previous step>",
    "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.<querysting-key>": "'static value'" //passing static value as querystring to backend
    }
}

Nota: Antes de pasar al paso 5, elimine los comentarios señalados con las barras inclinadas “//”.

5.    Para actualizar la integración, ejecute el comando de AWS CLI update-integration 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 REST.

Utilizar AWS CloudFormation

Si administra Amazon API Gateway mediante CloudFormation, puede utilizar el recurso AWS::ApiGatewayV2::Integration para configurar parámetros de solicitud de forma similar a la siguiente:

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

Puede utilizar la asignación de datos para asignar datos de una solicitud de ruta a la integración de backend del enlace de la VPC. Para obtener más información, consulte Asignar datos de solicitud de ruta a los parámetros de solicitud de integración.


¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?