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 :
-
Suivez les instructions pour créer un lien VPC avec l'API REST et l'associer à votre Network Load Balancer.
-
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.
-
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>
-
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'"
}
}
-
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
-
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