web-dev-qa-db-fra.com

SNS à Lambda vs SNS à SQS à Lambda

J'essaie de comprendre si j'ai besoin de SQS dans mon flux de travail si quelqu'un peut m'aider à expliquer. Dans mon application, lorsqu'une action est entreprise, il soumet des informations à un sujet SNS qui appelle LAMBDA pour effectuer certains traitements. Cela fonctionne bien comme ça.

Lorsque je fais des recherches en ligne, il semble que les gens utilisent SQS dans cette pile également, où SNS mettrait des informations sur SQS, puis SQS invoquerait LAMBDA. 

Je suppose que ce que j'essaie de comprendre, c'est la nécessité de SQS dans ce domaine. Quelle valeur cela ajoute-t-il ou, en d'autres termes, qu'est-ce que je perds en invoquant mon LAMBDA directement à partir de SNS?

13
Saumil Shah

Le seul avantage d’un SQS entre SNS et Lambda est le retraitement . Supposons que le Lambda ne traite pas certains événements pour une raison quelconque (délai dépassé ou manque d’empreinte mémoire, par exemple), vous pouvez augmenter le délai ) ou de la mémoire (jusqu'à 1,5 Go maximum) et redémarrez votre interrogation pour pouvoir retraiter les événements les plus anciens.

Cela ne serait pas possible dans le cas de SNS à Lambda, l’événement étant perdu si Lambda échoue. Et même si vous configurez DLQ, vous devez toujours prendre des dispositions pour lire cela séparément et traiter le message.

Donc, si vos événements sont critiques et que vous ne voulez pas les manquer, optez pour SNS - SQS - Lambda

Cela dit, SQS ne peut pas déclencher un lambda comme le SNS. Vous devrez interroger la SQS à intervalles fréquents

MODIFIER :

AWS a annoncé que SQS déclenchait la prise en charge de Lambda le 28 juin 2018. Il n'était donc plus nécessaire d'interroger la file d'attente à intervalles fréquents. Les nouveaux articles dans SQS peuvent déclencher Lambda

18
Arafat Nalkhande

SQS n'invoque pas Lambda. SQS ne peut rien invoquer. Les personnes utilisant Lambda avec SQS exécutent Lambda sur un minuteur, comme une fois par minute, et chaque fois que la fonction est exécutée, elle interroge SQS pour savoir s’il ya un message à traiter.

Si vous n'avez pas besoin de mettre les choses en file d'attente et d'empêcher l'exécution simultanée d'un trop grand nombre de fonctions Lambda, vous n'avez pas besoin d'un système de file d'attente comme SQS.

3
Mark B

Vous pouvez maintenant utiliser SQS comme source d’événement 

AWS Lambda ajoute le service Amazon Simple Queue aux sources d'événements prises en charge

2
alexs

En plus de la réponse de @Arafat Nalkhande, voici quelques avantages du lambda de SQS

  1. Dans SQS, nous pouvons mettre un delay , afin que le message soit traité après un certain temps, il peut être utile dans le cas où les données mettent du temps à être disponibles.

  2. SQS peut servir de magasin de secours, disons que les services en aval sont indisponibles, le message peut être conservé dans sqs pendant 15 jours.

1
best wishes