Comment puis-je empêcher les appels de fonctions Lambda dupliqués ?

Date de la dernière mise à jour : 18/11/2021

Ma fonction AWS Lambda continue de recevoir plus d'une demande d'appel pour un seul événement. Comment puis-je empêcher ma fonction Lambda d'appeler plusieurs fois à partir du même événement ?

Brève description

Pour éviter les appels de fonctions Lambda dupliqués, procédez comme suit en fonction du type d'appel que vous utilisez.

Remarque : pour les appels synchrones, les clients et les services AWS qui appellent une fonction Lambda sont responsables de l'exécution de nouvelles tentatives. Pour les invocations asynchrones, Lambda relance automatiquement en cas d'erreur, avec des délais entre les nouvelles tentatives.

Résolution

Pour les appels asynchrones

Parcourez les Amazon CloudWatch Logs de votre fonction Lambda pour vérifier les éléments suivants :

  • Si les appels dupliqués présentent le même ID de demande ou non
  • Si les appels dupliqués ont renvoyé des erreurs ou ont expiré

Ensuite, effectuez l'une des opérations suivantes en fonction de votre cas d'utilisation :

Pour les appels dupliqués qui ont renvoyé des erreurs ou ont expiré et qui ont le même ID de demande

Remarque : les appels dupliqués qui renvoient des erreurs ou un délai d'expiration et qui ont le même ID de demande indiquent que le service Lambda a réessayé la fonction.

Configurez la gestion des erreurs pour les appels asynchrones afin de réduire le nombre de tentatives de relance de votre fonction Lambda ayant échoué à des demandes d'appel asynchrones.

Pour en savoir plus, consultez la section Gestion des erreurs et tentatives automatiques dans AWS Lambda.

Pour les appels dupliqués qui n'ont pas renvoyé d'erreurs ou de délai d'expiration

Remarque : les appels dupliqués qui ne renvoient pas d'erreurs ou de délai d'expiration indiquent de nouvelles tentatives côté client.

Pour les appels synchrones

Remarque : le comportement de nouvelle tentative d'appel synchrone varie selon les services AWS, en fonction du mappage de la source d'événements de chaque service. Pour plus d'informations, consultez la section Appel piloté par des événements.