Como faço para passar um connectionId ou um token personalizado para a integração de links de VPC como um cabeçalho para as APIs WebSocket do API Gateway?

3 minuto de leitura
0

Quero passar um connectionId ou um token personalizado para a integração de links VPC como cabeçalho para minha API WebSocket do Amazon API Gateway.

Breve descrição

É necessário um connectionId para enviar uma resposta de retorno de chamada do backend para APIs do WebSocket. Por padrão, as APIs do WebSocket não passam o connectionId para a integração do link de VPC.

Para passar um connectionId ou um token personalizado, use o console do API Gateway e a AWS Command Line Interface (AWS CLI), ou use o AWS CloudFormation.

Resolução

Observação: se você receber erros ao executar comandos da AWS CLI, consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Use o console do API Gateway e a AWS CLI

Conclua as seguintes etapas:

  1. Siga as instruções para criar um link de VPC da API REST e associá-lo ao seu Network Load Balancer.

  2. Siga as instruções para configurar uma integração com a API WebSocket e criar um endpoint de integração privada com link de VPC.

  3. Para recuperar o ID de integração, execute o comando get-integrations da AWS CLI:

    aws apigatewayv2 get-integrations --api-id <api-id>
  4. Crie e salve um arquivo JSON chamado integration.json no seguinte 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 atualizar a integração, execute o comando da AWS CLI update-integration semelhante ao seguinte:

    aws apigatewayv2 update-integration --cli-input-json file://integration.json
  6. Para aplicar essas alterações, siga as instruções para implantar a API WebSocket.

Use o CloudFormation

Se você usa o CloudFormation para gerenciar o API Gateway, use o recurso AWS::ApiGatewayV2::Integration para configurar parâmetros de solicitação semelhantes aos seguintes:

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

Você pode usar o mapeamento de dados para mapear dados de uma solicitação de rota para a integração de backend do link de VPC. Para obter mais informações, consulte Mapear dados de solicitação de rota para parâmetros de solicitação de integração.

Informações relacionadas

Integrações para a API de WebSocket no API Gateway