Comment puis-je transmettre un ConnectionID ou un jeton personnalisé à l'intégration de liens VPC en tant qu'en-tête pour les API WebSocket Amazon API Gateway ?

Lecture de 3 minute(s)
0

Je souhaite transmettre un ConnectionID ou un jeton personnalisé à l'intégration de liens VPC en tant qu'en-tête pour mon API WebSocket Amazon API Gateway. Comment procéder ?

Brève description

Pour les API WebSocket, le ConnectionID est requis pour envoyer une réponse de rappel depuis le backend. Par défaut, les API WebSocket ne transmettent pas le ConnectionID à l'intégration de liens VPC.

Résolution

Utilisation de la console Amazon API Gateway et de l'AWS CLI

Remarque : si vous obtenez des erreurs lors de l'exécution de commandes de l'interface de la ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente de l'AWS CLI.

1.    Suivez les instructions pour créer un lien VPC d'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é avec un lien VPC.

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

aws apigatewayv2 get-integrations --api-id <api-id>

4.    Créez et enregistrez un fichier JSON nommé integration.json, selon le format suivant :

{
    "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
    }
}

Remarque : avant de passer à l'étape 5, supprimez les commentaires marqués par des barres obliques « // ».

5.    Pour mettre à jour l'intégration, exécutez la commande update-integration de l'AWS CLI, qui ressemble à ce qui suit :

aws apigatewayv2 update-integration --cli-input-json file://integration.json

6.    Pour appliquer ces modifications, suivez les instructions pour déployer l'API REST.

Utilisation d'AWS CloudFormation

Si vous gérez Amazon API Gateway à l'aide de CloudFormation, vous pouvez utiliser la ressource AWS::ApiGatewayV2::Integration pour configurer des paramètres de demande, qui ressemblent à ce qui suit :

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 de données pour mapper des données depuis une demande de route à l'intégration backend de liens VPC. Pour plus d'informations, consultez Mapper des données de demande de route aux paramètres de demande de route.


Informations connexes

Configuration des intégrations d'API WebSocket

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an