Comment transmettre un connectionId ou un jeton personnalisé à l'intégration de lien VPC en tant qu'en-tête pour les API WebSocket API Gateway ?

Lecture de 3 minute(s)
0

Je souhaite transmettre un connectionId ou un jeton personnalisé à l'intégration de lien VPC en tant qu'en-tête pour mon API WebSocket Amazon API Gateway.

Brève description

Un connectionId est requis pour envoyer une réponse de rappel depuis le service dorsal pour les API WebSocket. Par défaut, les API WebSocket ne transmettent pas le connectionId à l'intégration du lien VPC.

Pour transmettre un connectionId ou un jeton personnalisé, vous pouvez utiliser la console API Gateway et l'interface de la ligne de commande AWS (AWS CLI), ou AWS CloudFormation.

Résolution

**Remarque :**Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez l’article Résoudre les erreurs AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Utilisation de la console API Gateway et de l’AWS CLI

Procédez comme suit :

  1. Suivez les instructions pour créer un lien VPC avec l'API REST et l'associer à votre Network Load Balancer.

  2. Suivez les instructions pour configurer une intégration d'API WebSocket et créer un point de terminaison d'intégration privé de lien VPC.

  3. Pour récupérer l'ID de l'intégration, exécutez la commande get-integrations de l'AWS CLI :

    aws apigatewayv2 get-integrations --api-id <api-id>
  4. Créez et enregistrez un fichier JSON nommé integration.json au format suivant :

    {
      "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. Pour mettre à jour l'intégration, exécutez la commande update-integration de l'AWS CLI selon le modèle suivant :

    aws apigatewayv2 update-integration --cli-input-json file://integration.json
  6. Pour appliquer ces modifications, suivez les instructions pour déployer l'API WebSocket.

Utilisation de CloudFormation

Si vous utilisez CloudFormation pour gérer API Gateway, utilisez la ressource AWS::ApiGatewayV2::Integration pour configurer les paramètres de demande selon le modèle suivant :

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

Vous pouvez utiliser le mappage des données pour mapper les données d'une demande de routage vers l'intégration dorsale du lien VPC. Pour en savoir plus, consultez la page Mappage des données d’une demande de routage à des paramètres de demande d'intégration.

Informations connexes

Intégrations pour l'API WebSocket dans API Gateway

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 4 mois