Wie kann ich eine ConnectionID oder ein benutzerdefiniertes Token an die VPC-Link-Integration als Header für WebSocket-APIs von Amazon API Gateway übermitteln?

Zuletzt aktualisiert: 26.10.2022

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.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?