Pourquoi ma fonction Lambda avec une source d'événement Amazon SQS ne se met-elle pas à l'échelle de façon optimale ?

Dernière mise à jour : 30/01/2020

Ma fonction AWS Lambda avec un déclencheur Amazon Simple Queue Service (Amazon SQS) ne s’adapte pas comme prévu. Comment puis-je être sûr que ma fonction s'adapte à une simultanéité optimale ?

Brève description

Lorsque vous configurez une file d'attente SQS en tant que source d'événement et que les messages sont disponibles pour traitement, Lambda commence par une simultanéité maximale de cinq. De manière optimale, les fonctions Lambda avec un déclencheur Amazon SQS peuvent mettre à l'échelle 60 instances supplémentaires par minute pour atteindre un maximum de 1 000 appels simultanés. Pour que votre fonction soit mise à l'échelle de façon optimale, les conditions suivantes doivent être remplies :

  • La fonction ne génère aucune erreur.
  • La simultanéité non allouée est suffisante dans la région AWS, ou la simultanéité allouée pour la fonction est d'au moins 1 000.
  • Il y a des messages dans la file d'attente SQS.

Solution

Corriger les erreurs

En cas d'erreur lorsque Lambda tente d'appeler votre fonction, le service empêche votre fonction de se mettre à l'échelle pour éviter les erreurs à grande échelle. Lorsque les erreurs s'arrêtent, Lambda continue à faire évoluer votre fonction. Il ajoute 60 appels simultanés supplémentaires par minute. Votre fonction peut évoluer jusqu'à un maximum de 1 000 appels simultanés.

Remarque : pour que des appels simultanés supplémentaires puissent être ajoutés, votre compte ne peut pas être proche du quota de service pour la mise à l'échelle ou la simultanéité en rafale dans la Région.

Pour obtenir de l'aide sur les erreurs, consultez Dépannage des problèmes dans AWS Lambda et Comment résoudre les problèmes de fonction Lambda ?

Gérer la simultanéité

Si vous n'avez pas configuré la simultanéité allouée dans votre fonction, celle-ci a un quota de simultanéité non allouée par défaut de 1 000. Ce quota par défaut est partagé avec d'autres fonctions du même compte et de la même région. S'il y a au moins 1 000 simultanéités non allouées dans la région, votre fonction continue d’évoluer jusqu'à atteindre la simultanéité maximale. Sinon, les appels sont limités lorsque toutes vos simultanéités non allouées sont en cours d'utilisation.

Si vous avez configuré la simultanéité allouée dans votre fonction, assurez-vous qu'il y a au moins 1 000 simultanéités allouées. S'il y en a moins, votre fonction est limitée lorsqu'elle atteint la valeur allouée. Pour plus d'informations, consultez Gestion de la simultanéité pour une fonction Lambda.

Remarque : si vous déterminez que vous avez besoin d'une plus grande simultanéité pour une région, vous pouvez demander une augmentation du quota de service dans la console de quotas de service.

Vérifier la profondeur de la file d'attente

Lambda ajoute des appels uniquement s'il y a des messages dans la file d'attente SQS. Si vous ne voyez aucune limitation dans les métriques de votre fonction et qu'il n'y a aucune erreur, vérifiez la métrique de file d'attente SQS, ApproximateNumberOfMessagesNotVisible. Cette métrique indique le nombre de messages qui doivent encore être traités.

Si la métrique est faible (ou à 0), votre fonction ne peut pas évoluer. Si la métrique est élevée et croissante, et qu'il n'y a pas d'erreurs, vérifiez la configuration de la taille du lot de votre déclencheur. Il y a un léger délai entre la réception d'un message de la file d'attente et l'appel de votre fonction. Si la taille définie pour votre lot est faible, le léger délai peut s'accumuler sur tous les appels et entraîner une accumulation de messages en attente dans votre file d'attente. Essayez d'augmenter la taille de lot jusqu'à ce que la durée augmente plus rapidement que celle-ci, à concurrence de 10 maximum.

Remarque : si votre file d'attente SQS contient moins de 1 000 messages, vous êtes moins susceptible de recevoir un lot complet de 10 messages dans vos appels.

Pour plus d'informations, consultez ReceiveMessage dans la Référence des API d’Amazon SQS.


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


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