4
votes

Erreur de connexion AWS API Gateway WebSocket

J'ai créé une API par AWS API Gateway et Lambda qui est la même ' https : //github.com/aws-samples/simple-websockets-chat-app '. Mais l'API ne fonctionne pas la confiance. J'obtiens une erreur lorsque j'essaye de me connecter. Son message est "La connexion WebSocket à 'wss: //b91xftxta9.execute-api.eu-west-1.amazonaws.com/dev' a échoué: Erreur lors de l'établissement de liaison WebSocket: Code de réponse inattendu: 500"

Mon code de connexion

var ws= new WebSocket("wss://b91xftxta9.execute-api.eu-west-1.amazonaws.com/dev");
ws.onopen=function(d){
	console.log(d);
}


1 commentaires

Le code de réponse 500 est le code HTTP pour Internal Server Error ... donc votre première étape consiste à vérifier les journaux de la passerelle API.


3 Réponses :


1
votes

essayez d'utiliser wscat -c wss: //b91xftxta9.execute-api.eu-west-1.amazonaws.com/dev dans un terminal. Cela devrait vous permettre de le connecter. Si vous n'avez pas installé wscat, faites simplement une installation npm -g wscat


0 commentaires

2
votes

Essayez d'ajouter $ context.error.validationErrorString et $ context.integrationErrorMessage aux journaux de la scène.

J'ai ajouté un tas de choses au Section Format de journal , comme ceci:

{
"requestId": "QDu0QiP3oANFPZv=",
"ip": "76.54.32.210",
"requestTime": "21/Jul/2020:21:37:31 +0000",
"httpMethod": "POST",
"routeKey": "$default",
"status": "500",
"protocol": "HTTP/1.1",
"integrationErrorMessage": "The IAM role configured on the integration
    or API Gateway doesn't have permissions to call the integration.
    Check the permissions and try again.",
"responseLength": "35"
}

Au début du développement, cela m'a permis de voir ce type d'erreur:

{ "requestId":"$context.requestId", "ip": "$context.identity.sourceIp",
"requestTime":"$context.requestTime", "httpMethod":"$context.httpMethod",
"routeKey":"$context.routeKey", "status":"$context.status", 
"protocol":"$context.protocol", "errorMessage":"$context.error.message",
"path":"$context.path", 
"authorizerPrincipalId":"$context.authorizer.principalId",
"user":"$context.identity.user", "caller":"$context.identity.caller", 
"validationErrorString":"$context.error.validationErrorString", 
"errorResponseType":"$context.error.responseType", 
"integrationErrorMessage":"$context.integrationErrorMessage", 
"responseLength":"$context.responseLength" }


0 commentaires

0
votes

Pour obtenir plus de détails, activez la journalisation pour votre API: Étapes -> Journaux / traçage -> Paramètres CloudWatch -> Activez CloudWatch Logs . Ensuite, envoyez à nouveau une demande de connexion et surveillez vos journaux d'API dans CloudWatch. Dans mon cas, j'ai eu l'erreur suivante:

L'exécution a échoué en raison d'une erreur de configuration: API Gateway n'a pas l'autorisation d'assumer le rôle fourni {arn_of_my_role}

J'ai donc ajouté API Gateway aux relations de confiance de mon rôle, comme indiqué ici et cela a résolu le problème.


0 commentaires