Création de la fonction Lambda Hello world à l'aide de Node.js et création du déclencheur GateWay de l'API pour l'appel, tentative d'URL pour accéder à la fonction Lambda, obtention de l'erreur ci-dessous.
message: "Erreur interne du serveur".
(très nouveau sur AWS)
Vous devez passer la statusCode
après avoir exécuté la fonction Lambda. Si vous ne le transmettez pas, la passerelle API déclenchera une erreur 502 Bad Gateway
par défaut.
message = {
'message': 'Execution started successfully!'
}
return {
'statusCode': 200,
'headers': {'Content-Type': 'application/json'},
'body': json.dumps(message)
}
EDIT: Cet exemple est pour Python. Pour node.js, il vous suffit de gérer le rappel, le message est fondamentalement le même.
callback(null, {
statusCode: 200,
body: JSON.stringify(message),
headers: {'Content-Type': 'application/json'}
});
J'ai eu ce problème, mais dans mon cas, j'utilisais API Gateway et la fonction Java lambda. En regardant dans cloudwatch, il n'y avait pas d'erreur, tout se passe bien. Le problème se produit lorsque API Gateway tente de restituer la réponse . Dans mon cas, j'avais dans mon objet de réponse, le code de statut qui n'était pas un int, alors que la passerelle d'API en avait besoin.
Ce
private final ResponseCode statusCode;
private final String body;
private final Map<String, String> headers;
private final boolean isBase64Encoded;
Après avoir changé statusCode en int
private final int statusCode;
Cela marche
J'ai eu ce problème en utilisant API Gateway + Lambda. Dans mon cas, le problème était simplement une question de permission. J'utilisais des étapes dans mon API.
Je devais exécuter
aws lambda add-permission --function-name X --source-arn "X" --principal apigateway.amazonaws.com --statement-id X --action lambda:InvokeFunction
J'espère que cela t'aides.
Cette erreur indique qu'il y a eu un problème avec la configuration de l'API. Si vous activez CloudWatch Logs, vous pouvez voir plus d'informations: https://aws.Amazon.com/premiumsupport/knowledge-center/api-gateway-cloudwatch-logs/