2

Je construis un service qui utiliserait les données provenant d'une autre source (service). Donc, je pense à utiliser le pipeline suivant: -AWS SQS Requis ou non

Autre service ----> ---- SNS Sujet> SQS ----> AWS Lambda ----> Dynamo Db

Alors , ce que dit ci-dessus flux est un autre service va pousser les données à SNS Topic à laquelle un SQS serait un abonné. Maintenant, AWS Lambda aura un déclencheur sur ce SQS qui écoutera les messages dans SQS et le poussera sur Dynamo Db. Bien que cela semble correct de le faire. Mais maintenant je pense si j'ai vraiment besoin de SQS ou non. Puis-je éviter de l'utiliser? Au lieu d'utiliser SQS, AWS Lambda a directement un déclencheur sur SNS. Je pense juste à un cas si je n'utilise pas AWS SQS. Comment va-t-il gérer le scénario si la base de données AWS Dynamo échoue? Je pense qu'avec seulement SNS, je perdrais quelques messages pendant le temps, mon Dynamo Db est en état d'échec mais si j'ai SQS, alors ces messages seraient stockés dans la file d'attente SQS.

S'il vous plaît laissez-moi savoir si ma compréhension est correcte.

Merci beaucoup pour votre aide.

+1

SQS ne peut pas déclencher un Lambda car il s'agit d'une architecture d'interrogation. Vous pouvez cependant déclencher un Lambda à partir de SNS car il est piloté par un événement comme Lambda. Voir [sources d'événements supportés] (http://docs.aws.amazon.com/lambda/latest/dg/invoking-lambda-function.html) pour Lambda pour plus d'informations. – stdunbar

+0

Merci pour votre réponse. Je pense qu'il n'y a pas de moyen direct de le faire avec SQS. Mais il y a un moyen personnalisé que je pense que nous pourrions faire comme mentionné dans ce blog. https://cloudonaut.io/integrate-sqs-and-lambda-serverless-architecture-for-asynchronous-loadloads/. Autre que ceci, ma question concerne principalement si j'utilise seulement SNS, aucun SQS, peut-il y avoir un problème dans le cas où Dynamo Db échoue. – hatellla

Répondre

5

Je ne peux pas répondre autant dans les commentaires, donc je vais essayer ici.

L'architecture à laquelle vous avez accédé est assez courante. Les deux plus grosses chutes sont que vous allez facturer l'utilisation de Lambda même s'il n'y a rien à faire et que vos données peuvent être retardées par le montant de l'intervalle d'interrogation qui est d'au moins 1 minute. Cependant, aucune de ces choses ne peut avoir d'importance dans votre problème.

SQS peut être utilisé comme stockage temporaire de données en cas de défaillance de DynamoDB. Mais qu'allez-vous faire exactement si cela échoue? Que faire si SQS échoue et perd vos messages? Que faire si Lambda échoue et n'exécute jamais votre code? DynamoDB est un service hébergé comme SQS et Lambda - Amazon va travailler très dur pour continuer à fonctionner comme leurs autres services. Essayer d'architecturer autour de chaque scénario d'échec possible signifie que vous ne livrerez jamais de code. Je me concentrerais sur l'architecture la plus simple possible et ferais confiance aux services pour lesquels vous payez.

+0

Merci beaucoup pour l'explication. Alors, qu'est-ce que vous recommandez, je pense alors qu'il ne semble pas y avoir beaucoup d'utilisation de SQS en tant que tel, n'est-ce pas? – hatellla

+1

Non, je ne vois pas la valeur de SQS dans votre scénario, car elle ajoute une complexité supplémentaire sans réel bénéfice. – stdunbar

+0

comme le commentaire 'Essayer d'architecturer autour de chaque scénario d'échec possible signifie que vous ne livrerez jamais de code' :). +1 –