Dans AWS API Gateway, j'ai une méthode GET qui invoque une fonction lambda.
Lorsque je teste la méthode dans le tableau de bord API Gateway, la fonction lambda s'exécute correctement mais API Gateway ne mappe pas l'appel context.success () à un résultat 200 malgré le mappage par défaut défini sur yes.
Au lieu de cela, j'obtiens cette erreur:
Execution failed due to configuration error: No match for output mapping and no default output mapping configured
Voici ma configuration de réponse d'intégration:
Et voici ma configuration de réponse de méthode:
Fondamentalement, je m'attendrais à ce que la passerelle API reconnaisse l'exécution lambda réussie, puis la mappe par défaut à une réponse 200, mais cela ne se produit pas.
Est-ce que quelqu'un sait pourquoi cela ne fonctionne pas?
Un problème est survenu lors de l'enregistrement du mappage de réponse d'intégration par défaut qui a été résolu. Le bogue a provoqué des demandes aux méthodes API qui ont été enregistrées de manière incorrecte pour renvoyer une erreur 500, les journaux CloudWatch doivent contenir:
Execution failed due to configuration error:
No match for output mapping and no default output mapping configured.
Étant donné que "ENABLE CORS" enregistre la réponse d'intégration par défaut, ce problème est également apparu dans votre scénario.
Pour plus d'informations, veuillez vous référer à l'entrée des forums AWS: https://forums.aws.Amazon.com/thread.jspa?threadID=221197&tstart=
Meilleur,
Jurgen
J'ai eu le problème similaire, je l'ai résolu en ajoutant la réponse de méthode 200
Ce qui a fonctionné pour moi:
1. Dans Api Gateway Console, méthode OPTIONS créée manuellement
2. Dans la section Réponse de méthode sous la méthode OPTIONS créée, ajouté 200 OK
3. Méthode d'option sélectionnée et CORS activé dans le menu
J'ai trouvé le problème:
Amazon avait ajouté un nouveau bouton dans la configuration des ressources API-Gateway intitulé "Activer CORS". J'avais déjà cliqué dessus, mais une fois activé, il ne semble pas être possible de le désactiver
L'activation de CORS à l'aide de ce bouton (au lieu de le faire manuellement, ce que j'ai fini par faire) semble provoquer une erreur de serveur interne même lors d'une exécution lambda réussie.
SOLUTION: J'ai supprimé la ressource et l'ai recréée sans cliquer sur 'Activer CORS' cette fois et tout a bien fonctionné.
Cela semble être un BUG avec cette fonctionnalité, mais peut-être que je ne le comprends pas assez bien. Commentez si vous avez d'autres informations. Merci.