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

Date de la dernière mise à jour : 2021-06-21

J'ai configuré ma file d'attente Amazon Simple Queue Service (Amazon SQS) pour appeler ma fonction AWS Lambda. Maintenant, ma fonction Lambda ne se met pas à l'échelle comme prévu. Comment puis-je m'assurer que ma fonction se met à l'échelle à la simultanéité optimale si j'utilise une file d'attente Amazon SQS comme source d'évènements ?

Solution

Remarque : lors d'une exécution optimale, Lambda fonctionne avec une file d'attente Amazon SQS configurée en tant que source d'évènements pouvant augmenter d'échelle jusqu'à 60 instances supplémentaires par minute. Le nombre maximal d'appels simultanés est de 1 000. Si vous utilisez le mappage des sources d'évènements FIFO, les fonctions peuvent se mettre à l'échelle en même temps que le nombre de groupes de messages actifs. Pour plus d'informations, consultez Mise à l'échelle et traitement.

Identifiez et résolvez toutes les erreurs d'appel de la fonction Lambda

Pour éviter que des erreurs ne se produisent à grande échelle, Lambda bloque la mise à l'échelle de la fonction lorsque des erreurs d'appel se produisent. Lorsque les erreurs sont résolues, Lambda continue de mettre à l'échelle la fonction.

Pour connaître les bonnes pratiques sur l'identification et la résolution des erreurs d'appel de fonction Lambda, reportez-vous aux points suivants :

Vérifiez que votre fonction Lambda est configurée avec une simultanéité optimale pour votre cas d'utilisation.

Simultanéité réservée

Si vous avez configuré la simultanéité réservée sur votre fonction, celle-ci est limitée lorsqu'elle atteint la valeur réservée. Il est recommandé de s'assurer que la quantité de simultanéité réservée à votre fonction est au moins la suivante :

  • Pour les files d'attente standard Amazon SQS : 1 000
  • Pour les files d'attente FIFO : au moins le nombre de groupes de messages actifs

Simultanéité allouée

Si vous n'avez pas configuré la simultanéité allouée dans votre fonction, celle-ci a un quota de simultanéité non réservée (simultanéité allouée) par défaut de 1 000. Ce quota par défaut est partagé avec d'autres fonctions du même compte AWS et de la même région. Si la simultanéité allouée disponible dans la région de votre fonction est d'au moins 1 000, la fonction continue à se mettre à l'échelle jusqu'à ce qu'elle atteigne la simultanéité maximale. Les appels sont limités lorsque l'ensemble de la simultanéité provisionnée est utilisée.

Pour plus d'informations, consultez Gestion de la simultanéité pour une fonction Lambda.

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. Si vous avez besoin d'une plus grande simultanéité pour une région, demandez une augmentation du quota de service dans la console de quotas de service.

Vérifiez qu'il y a suffisamment de messages dans votre file d'attente Amazon SQS pour permettre à votre fonction Lambda de se mettre à l'échelle.

Si une file d'attente Amazon SQS est configurée pour appeler une fonction Lambda, Lambda ne mettra à l'échelle les appels que s'il y a des messages dans la file d'attente.

Pour vérifier combien de messages de votre file d'attente Amazon SQS doivent encore être traités, consultez votre métrique ApproximateNumberOfMessagesVisible.

Si la métrique est faible ou à 0, votre fonction ne peut pas évoluer.

Si la métrique est élevée et qu'il n'y a pas d'erreur d'appel, essayez d'augmenter la taille du lot sur votre notification d'évènement. Augmentez la taille du lot jusqu'à ce que la métrique dedurée augmente plus rapidement que la métrique de taille du lot. Pour plus d'informations, consultez la section Surveillance des fonctions dans la console AWS Lambda.

Remarque : La taille maximale du lot pour une file d'attente Amazon SQS standard est de 10 000 enregistrements. Pour les files d'attente FIFO, la taille maximale du lot est de 10 enregistrements. Pour plus d'informations, consultez ReceiveMessage dans la référence d'API Amazon SQS.


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


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