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:
-
Siga as instruções para criar um link de VPC da API REST e associá-lo ao seu Network Load Balancer.
-
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.
-
Para recuperar o ID de integração, execute o comando get-integrations da AWS CLI:
aws apigatewayv2 get-integrations --api-id <api-id>
-
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'"
}
}
-
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
-
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