Je souhaite intégrer un point de terminaison Amazon API Gateway à AWS Lambda, mais je reçois une erreur.
Résolution
Suivez ces étapes de dépannage pour l'erreur que vous avez reçue.
Avant de commencer, activez Amazon CloudWatch Logs pour résoudre les erreurs d'API Gateway. Pour Niveau de journalisation, sélectionnez INFORMATIONS pour générer des journaux d'exécution pour toutes les requêtes.
API Gateway ne dispose pas d'autorisations de la fonction Lambda
L'erreur Autorisations non valides sur la fonction Lambda se produit lorsqu’API Gateway ne dispose pas d’autorisations pour invoquer la fonction Lambda. Pour résoudre ce problème, consultez la section Comment résoudre les erreurs « Autorisations non valides sur la fonction Lambda » provenant des API REST API Gateway ?
Remarque : Si vous utilisez un autre service pour déployer vos ressources API Gateway, tel qu'AWS CloudFormation, accordez des autorisations à la ressource AWS::Lambda::Permission.
Une limitation se produit
Si le service de backend est limité en raison d’un nombre élevé de requêtes, l'API API Gateway peut renvoyer une erreur de serveur interne. Activez un mécanisme de backoff exponentiel et de nouvelles tentatives, puis essayez à nouveau d'exécuter la requête. Si le problème persiste, vérifiez votre quota API Gateway. Si vous dépassez le quota de service, demandez une augmentation du quota pour la simultanéité de la fonction Lambda afin que celle-ci ne soit pas limitée.
Vous pouvez également recevoir des erreurs Dépassement du taux et 429 TooManyRequestsException en raison de problèmes de limitation de la fonction Lambda. Pour plus d’informations, consultez la section Comment puis-je résoudre les erreurs de limitation « Dépassement du taux » et « TooManyRequestsException » de la fonction Lambda ?
Le mappage du code de statut est incorrect ou manquant
Lorsque le mappage du code de statut HTTP est incorrect ou absent, un message d'erreur 500 similaire au suivant peut s’afficher :
« Execution failed due to configuration error: Output mapping refers to an invalid method response: 2xx/4xx/5xx ».
Pour résoudre cette erreur, configurez la requête d'intégration et la réponse de l'opération API pour renvoyer le code de statut correct.
Les exceptions du service Lambda ne sont pas gérées
Si vous ne gérez pas les exceptions de service Lambda, telles que le délai d'expiration de la fonction Lambda, vous recevez une erreur Lambda.Unknown. Pour éviter une expiration du délai de la fonction Lambda, rendez le code de votre fonction Lambda idempotent.
Pour plus d'informations, consultez la section Modèles de gestion des erreurs dans API Gateway et Lambda.
Problèmes d’expiration du délai du point de terminaison d’intégration Lambda
La limite de quota par défaut du délai d'intégration d'API Gateway est de 29 secondes pour tous les types d'intégration. Si votre fonction Lambda met plus de 29 secondes à renvoyer la réponse, la requête échoue avec une erreur 504 Expiration du délai de la requête du point de terminaison.
Assurez-vous que votre fonction Lambda renvoie la réponse dans les 29 secondes. Si votre fonction Lambda ne parvient pas à renvoyer la réponse dans les 29 secondes, soumettez une augmentation de quota pour la limite du délai d’attente d'intégration.
Remarque : Vous pouvez augmenter le délai d’attente d'intégration à plus de 29 secondes pour les API régionales et les API privées. Toutefois, une augmentation du délai d’attente d'intégration peut entraîner une réduction du quota d'accélération au niveau de la région pour votre compte AWS.
Format JSON de sortie de la fonction Lambda incorrect
Si la sortie de votre fonction Lambda intégrée n'est pas conforme au format JSON spécifié pour les API REST, vous recevez une erreur proxy incorrect. Assurez-vous d'utiliser le format JSON correct pour la sortie des fonctions Lambda pour les intégrations de proxy et des mécanismes d’autorisation Lambda.
Exemple de fonction Lambda pour l'intégration de proxy :
{
"isBase64Encoded": true|false,
"statusCode": httpStatusCode,
"headers": { "headerName": "headerValue", ... },
"multiValueHeaders": { "headerName": ["headerValue", "headerValue2", ...], ... },
"body": "..."
}
Informations connexes
Comment résoudre les erreurs d'invocation HTTP d'API Gateway ?