Comment résoudre les problèmes d'invocation synchrone Lambda ?

Dernière mise à jour: 14-10-2022

J'ai configuré une fonction AWS Lambda pour l'appeler de manière synchrone, mais la destination ne démarre pas. Comment puis-je résoudre ce problème ?

Lorsque j'invoque une fonction Lambda via la console Lambda, est-elle invoquée de manière synchrone ou asynchrone ?

-ou-

Pourquoi ma fonction Lambda ne retente-t-elle pas après l'avoir configurée pour qu'elle retente une ou deux fois de plus ?

Solution

Lorsque vous invoquez une fonction Lambda de manière synchrone et que celle-ci échoue, les causes possibles sont les suivantes :

  • Lambda n'est pas autorisé à effectuer les actions incluses dans le code.
  • Le service AWS qui invoque la fonction Lambda ne dispose pas d'autorisations suffisantes.
  • Lambda est invoqué de manière asynchrone.
  • Lambda prend en charge les destinations uniquement pour les appels asynchrones et les appels de flux, et non pour les appels synchrones.

Pour résoudre les problèmes d'invocation synchrone, procéder comme suit :

1.    Déterminer comment la fonction Lambda est invoquée. La fonction est-elle invoquée via l'interface de ligne de commande AWS CLI? La fonction est-elle invoquée via un service AWS ?

2.    Vérifier si le service AWS invoque la fonction Lambda de manière synchrone ou asynchrone.

3.    Invoquer la fonction Lambda de manière synchrone à l'aide de la commande suivante :

aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{ "key": "value" }' response.json

Vérifier si un code d'état 200 est signalé ou si la commande renvoie une erreur.

4.    Ne pas oublier que le comportement des nouvelles tentatives de la fonction Lambda est contrôlé par le client lors d'invocations synchrones. La configuration des tentatives de nouvelle tentative à partir de la console AWS Lambda est limitée aux invocations asynchrones. Assurez-vous que le client retente les demandes plutôt que de consulter les journaux Lambda.

5.    Avoir à l’esprit qu'une fonction Lambda invoquée dans la console Lambda est toujours une invocation synchrone.

6.    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 Appel basé sur les événements.

7.    Assurez-vous que le code de votre fonction Lambda est idempotent et capable de gérer les mêmes messages plusieurs fois.

8.    Identifiez et résolvez les erreurs renvoyées par votre fonction Lambda.

Pour plus d'informations, consultez How do I troubleshoot Lambda function failures? (Comment résoudre les échecs des fonctions Lambda ?)

9.    Si vous ne parvenez toujours pas à résoudre le problème, ouvrez un dossier auprès d'AWS Support. Fournissez les informations suivantes :

  • La fonction Lambda ARN.
  • Le flux de travail relatif à la configuration de la fonction Lambda avec tous les services inclus.
  • Détails indiquant si le problème est intermittent ou continu.
  • Complétez les journaux CloudWatch au format .txt à partir du moment où le problème s'est produit. Ces journaux CloudWatch sont utilisés pour identifier les erreurs de fonction Lambda, notamment les problèmes de délai d'expiration, de durée d'initialisation et d'autorisations.
  • L'horodatage exact du problème avec le fuseau horaire ou l'horodatage en UTC.

Remarque : Les représentants d'AWS Support n'ont pas accès aux journaux CloudWatch des clients pour des raisons de sécurité et de confidentialité.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?