Desidero passare un connectionID o un token personalizzato all'integrazione del collegamento VPC come intestazione per la mia API WebSocket di Gateway Amazon API.
Breve descrizione
Per inviare una risposta di callback dal backend per le API WebSocket è necessario un connectionID. Per impostazione predefinita, le API WebSocket non trasmettono il connectionID all'integrazione del collegamento VPC.
Per trasmettere un connectionID o un token personalizzato, utilizza la console API Gateway e l'interfaccia della linea di comando AWS (AWS CLI) oppure utilizza AWS CloudFormation.
Risoluzione
Nota: se visualizzi dei messaggi di errore quando esegui i comandi dell'interfaccia della linea di comando AWS, consulta la sezione Risolvere gli errori AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Usa la console API Gateway e AWS CLI
Completa i seguenti passaggi:
-
Segui le istruzioni per creare un collegamento VPC all’API REST e associarlo al Network Load Balancer.
-
Segui le istruzioni per configurare un'integrazione API WebSocket e creare un endpoint di integrazione privato con collegamento VPC.
-
Per recuperare l'ID di integrazione, esegui il comando di AWS CLI get-integrations:
aws apigatewayv2 get-integrations --api-id <api-id>
-
Crea e salva un file JSON denominato integration.json nel seguente 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'"
}
}
-
Per aggiornare l'integrazione, esegui il comando di AWS CLI update-integration simile al seguente:
aws apigatewayv2 update-integration --cli-input-json file://integration.json
-
Per applicare queste modifiche, segui le istruzioni per implementare l'API WebSocket.
Utilizza CloudFormation
Se utilizzi CloudFormation per gestire API Gateway, usa la risorsa AWS::ApiGatewayV2::Integration per configurare parametri della richiesta simili ai seguenti:
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
Puoi utilizzare la mappatura dei dati per mappare i dati da una richiesta di instradamento all'integrazione backend del collegamento VPC. Per ulteriori informazioni, consulta Map route request data to integration request parameters.
Informazioni correlate
Integrazioni per l'API WebSocket in API Gateway