Ich möchte eine ConnectionID oder ein benutzerdefiniertes Token an die VPC-Link-Integration als Header für meine WebSocket-API von Amazon API Gateway übermitteln. Wie gehe ich dabei vor?
Kurzbeschreibung
Für WebSocket-APIs ist die ConnectionID erforderlich, um eine Callback-Antwort vom Backend zu senden. Standardmäßig übermitteln WebSocket-APIs die ConnectionID nicht an die VPC-Link-Integration.
Behebung
Verwenden der Amazon-API-Gateway-Konsole und AWS CLI
Hinweis: Wenn Sie beim Ausführen von Befehlen von AWS Command Line Interface (AWS CLI) Fehlermeldungen erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.
1. Befolgen Sie die Anweisungen, um einen REST-API-VPC-Link zu erstellen und ihn Ihrem Network Load Balancer zuzuordnen.
2. Befolgen Sie die Anweisungen, um eine WebSocket-API-Integration einzurichten und einen privaten VPC-Link-Integrationsendpunkt zu erstellen.
3. Um die Integrations-ID abzurufen, führen Sie den AWS-CLI-Befehl get-integrations ähnlich dem Folgenden aus:
aws apigatewayv2 get-integrations --api-id <api-id>
4. Erstellen und speichern Sie eine JSON-Datei mit dem Namen integration.json im folgenden Format:
{
"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
}
}
Hinweis: Bevor Sie mit Schritt 5 fortfahren, entfernen Sie die mit den Schrägstrichen „//“ notierten Kommentare.
5. Um die Integration zu aktualisieren, führen Sie den AWS-CLI-Befehl update-integration ähnlich dem Folgenden aus:
aws apigatewayv2 update-integration --cli-input-json file://integration.json
6. Um diese Änderungen anzuwenden, befolgen Sie die Anweisungen zum
Bereitstellen der REST-API.
Benutzung von AWS CloudFormation
Wenn Sie Amazon API Gateway mithilfe von CloudFormation verwalten, können Sie die Ressource AWS::ApiGatewayV2::Integration verwenden, um Anforderungsparameter ähnlich der Folgenden zu konfigurieren:
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
Sie können die Datenzuordnung verwenden, um Daten aus einer Routenanforderung der VPC-Link-Backend-Integration zuzuordnen. Weitere Informationen finden Sie unter Zuordnen von Routenanforderungsdaten zu Integrationsanforderungsparametern.
Relevante Informationen
WebSocket-API-Integrationen einrichten