Pourquoi la mise à l’échelle de ma fonction Lambda associée à une source d’événements Amazon SQS ne s’effectue-t-elle pas de manière optimale ?

Lecture de 5 minute(s)
0

J’utilise une file d’attente Amazon Simple Queue Service (Amazon SQS) comme source d’événements et souhaite que ma fonction AWS Lambda bénéficie d’une simultanéité optimale.

Résolution

Remarque : lorsque vous configurez une file d’attente Amazon SQS comme source d’événements, les fonctions Lambda peuvent augmenter verticalement jusqu’à 300 instances supplémentaires par minute. Pour les files d’attente standard, le nombre maximal d’invocations simultanées est de 1 000. Si vous utilisez le mappage des sources d’événements FIFO, les fonctions peuvent diminuer horizontalement en fonction du nombre de groupes de messages actifs. Pour plus d’informations, consultez Mise à l’échelle et traitement.

Identifier et résoudre des erreurs d’invocation de fonction Lambda

Pour éviter les erreurs de mise à l’échelle, Lambda limite la mise à l’échelle des fonctions en cas d’erreur d’invocation. Une fois les erreurs résolues, Lambda poursuit alors la mise à l’échelle des fonctions. Pour plus d’informations, consultez Stratégie d’annulation en cas d’échec des appels. Pour connaître les meilleures pratiques de résolution des erreurs d’invocation de fonctions Lambda, consultez les sections Résolution des problèmes en lien avec Lambda et Comment puis-je résoudre les problèmes d’échecs de fonction Lambda ?

Configurer une fonction Lambda 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 pour une fonction, Lambda limite cette fonction lorsqu’elle atteint la valeur réservée. Les mappages de sources d’événements ne tiennent pas compte de la simultanéité réservée et peuvent traiter plus de messages hors de la file d’attente qu’ils ne peuvent être envoyés à votre fonction.

Le niveau de simultanéité réservée de votre fonction doit être défini sur les valeurs minimales suivantes :

  • Pour les files d’attente Amazon SQS standard : 1 000
  • Pour les files d’attente FIFO : Le nombre de groupes de messages actifs

Pour les files d’attente FIFO, l’utilisation d’un niveau de simultanéité réservée inférieur au nombre de groupes de messages n’est pas recommandée. En effet une valeur de simultanéité réservée inférieure peut entraîner des retards de traitement dans la file d’attente FIFO et limiter la fonction.

Important : pour limiter le nombre d’invocations simultanées, utilisez le paramètre de simultanéité maximale pour les sources d’événements Amazon SQS au lieu de la simultanéité réservée.

Simultanéité non réservée

Si vous ne configurez pas la simultanéité réservée pour une fonction, le quota de simultanéité non réservée est fixé à 1 000 par défaut. Ce quota s’applique aux autres fonctions du même compte AWS et de la même région AWS. Si vous disposez d’une limite de simultanéité non réservée d’au moins 1 000 invocations dans la région de votre fonction, le nombre d’exécutions simultanées de la fonction augmente jusqu’à ce qu’il atteigne la limite maximale disponible. Lorsque la totalité du quota de simultanéité de votre compte est utilisée, Lambda limite les invocations.

Remarque : la mise à l’échelle des fonctions Lambda s’effectue initialement selon le taux de mise à l’échelle de la simultanéité.

Pour éviter une mise à l’échelle excessive due à des pics de trafic soudains, Lambda limite le taux de mise à l’échelle des fonctions. Le taux de mise à l’échelle de la simultanéité définit la vitesse maximale à laquelle la mise à l’échelle des fonctions de votre compte peut s’effectuer en réponse à des pics de requêtes.

Important : le taux de mise à l’échelle de la simultanéité est une limite au niveau de la fonction. La mise à l’échelle d’une fonction de votre compte peut donc s’effectuer indépendamment des autres fonctions. Le taux de mise à l’échelle de la simultanéité diffère également de la limite de simultanéité définie au niveau du compte, qui spécifie la quantité totale d’unités de simultanéité disponibles pour l’exécution des fonctions.

Paramètre de simultanéité maximale

Le paramètre de simultanéité maximale limite le nombre maximal d’exécutions simultanées d’une fonction Lambda afin de ne pas dépasser une valeur configurée. Lorsque vous définissez la simultanéité maximale d’une source d’événements, cette valeur ne s’applique qu’à cette source d’événements spécifique. Toutes les sources d’événements supplémentaires pour lesquelles aucune limite maximale de simultanéité n’est définie utilisent le quota de simultanéité restant du compte ou la simultanéité réservée.

Le paramètre de simultanéité maximale et le paramètre de simultanéité réservée peuvent s’utiliser conjointement. Toutefois, il est recommandé de ne pas définir un paramètre de simultanéité maximale sur une valeur supérieure à la simultanéité réservée, car cela peut entraîner une limitation de la fonction.

Vérifiez que la file d’attente Amazon SQS contient suffisamment de messages pour permettre la mise à l’échelle de la fonction Lambda

Si une file d’attente Amazon SQS est configurée pour invoquer une fonction Lambda, Lambda n’augmente le nombre d’invocations que s’il y a des messages dans la file d’attente.

Pour vérifier le nombre de messages à traiter dans la file d’attente Amazon SQS, consultez la métrique ApproximateNumberOfMessagesVisible.

Si la métrique est faible ou égale à 0, la mise à l’échelle de la fonction ne peut s’effectuer.

Si la métrique est élevée et qu’il n’y a aucune erreur d’invocation, essayez d’augmenter la taille du lot sur votre notification d’événement. Augmentez la taille du lot jusqu’à ce que la métrique de durée augmente plus rapidement que la métrique de taille du lot. Pour plus d’informations, consultez Surveillance des fonctions sur la console Lambda.

Remarque : la taille de lot maximale d’une file d’attente Amazon SQS standard est de 10 000 enregistrements. Pour les files d’attente FIFO, la taille de lot maximale est de 10 enregistrements. Pour plus d’informations, consultez la page ReceiveMessage.

Informations connexes

Utilisation de Lambda avec Amazon SQS

Gestion de la simultanéité des fonctions AWS Lambda

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un mois