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 en savoir plus, veuillez consulter la rubrique Gestion de la simultanéité pour une fonction Lambda.
Remarque : pour augmenter des appels simultanés supplémentaires, 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 Service Quotas.
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 si la file d'attente contient des messages.
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 se mettre à l'échelle.
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 de durée augmente plus rapidement que la métrique de taille du lot. Pour plus d'informations, veuillez consulter la rubrique 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.
Informations connexes
Utilisation de Lambda avec Amazon SQS
Mise à l'échelle de la fonction AWS Lambda
Gestion de la simultanéité de la fonction AWS Lambda