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

Lesedauer: 2 Minute
0

Ich möchte eine ConnectionID oder ein benutzerdefiniertes Token als Header für meine Amazon API Gateway WebSocket-API an die VPC-Link-Integration übergeben.

Kurzbeschreibung

Eine ConnectionID ist erforderlich, um eine Callback-Antwort vom Backend für WebSocket-APIs zu senden. Standardmäßig übergeben WebSocket-APIs die ConnectionID nicht an die VPC-Link-Integration.

Um eine ConnectionID oder ein benutzerdefiniertes Token zu übergeben, verwenden Sie die API Gateway-Konsole und das AWS Command Line Interface (AWS CLI) oder verwenden Sie AWS CloudFormation.

Behebung

**Hinweis:**Wenn Sie beim Ausführen von Befehlen in AWS CLI Fehlermeldungen erhalten, finden Sie weitere Informationen unter Beheben von AWS CLI-Fehlern. Stellen Sie außerdem sicher, dass Sie die neueste Version von AWS CLI verwenden.

Verwenden der API Gateway-Konsole und die AWS CLI

Führen Sie die folgenden Schritte aus:

  1. Folgen Sie den Anweisungen, um einen REST-API-VPC-Link zu erstellen und ihn Ihrem Network Load Balancer zuzuordnen.

  2. Folgen Sie den 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 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",
        "integration.request.header.<header-key>": "route.request.body.<parameter>",
        "integration.request.querystring.<querysting-key>": "'static value'"
      }
    }
  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. Folgen Sie den Anweisungen zur Bereitstellung der WebSocket-API, um diese Änderungen anzuwenden.

CloudFormation verwenden

Wenn Sie CloudFormation zur Verwaltung von API Gateway verwenden, verwenden Sie die Ressource AWS: :ApiGatewayV2: :Integration, um Anforderungsparameter ähnlich den 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.

Ähnliche Informationen

Integrationen für die WebSocket-API in API Gateway

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 4 Monaten