Como posso passar um connectionID ou um token personalizado para a integração do VPC Link como cabeçalho para as APIs de WebSocket do Amazon API Gateway?

3 minuto de leitura
0

Quero passar um connectionID ou token personalizado para a integração do VPC Link como cabeçalho para minha API de WebSocket do Amazon API Gateway. Como faço isso?

Breve descrição

Para as APIs de WebSocket, o connectionId é necessário para enviar uma resposta de retorno de chamada do back-end. Por padrão, as APIs de WebSocket não passam o ConnectionId para a integração do link VPC.

Resolução

Usando o console do Amazon API Gateway e a CLI da AWS

Observação: se receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está usando a versão mais recente da AWS CLI.

1.    Siga as instruções para criar um link 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 de WebSocket e criar um endpoint de integração privada do link VPC.

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

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", //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 prosseguir para a etapa 5, remova os comentários com as barras "//”.

5.    Para atualizar a integração, execute o comando update-integration da CLI da AWS 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 REST.

Usando o AWS CloudFormation

Se você gerencia o Amazon API Gateway usando o CloudFormation, você pode usar 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 back-end do link da 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

Como configurar as integrações da API de WebSocket