web-dev-qa-db-ja.com

SNSからLambda対SNSからSQS to Lambda

誰かが説明を手伝ってくれるなら、ワークフローでSQSが必要かどうかを理解しようとしています。私のアプリでは、アクションが実行されると、SNSトピックに情報を送信し、LAMBDAを呼び出して処理を行います。これはそのままでうまく機能しています。

私がオンラインで調査すると、SNSがSQSに情報を入力し、SQSがLAMBDAを呼び出す場所でも、このスタックでSQSを使用しているようです。

私が理解しようとしているのは、これにおけるSQSの必要性だと思います。 SNSから直接LAMBDAを呼び出すと、どのような価値が追加されますか、言い換えれば、何が失われますか?

22
Saumil Shah

SNSとLambdaの間にSQSを置くことの唯一の利点は、再処理です。 Lambdaが何らかの理由(タイムアウトやメモリフットプリントの不足など)で特定のイベントの処理に失敗した場合、タイムアウト(最大5分)またはメモリ(最大1.5GB)を増やしてポーリングを再開し、再処理できます古いイベント。

これは、LambdaへのSNSの場合には不可能です。Lambdaが失敗すると、イベントは失われます。また、DLQを構成した場合でも、それを個別に読み取り、メッセージを処理するための準備をする必要があります。

イベントが重要であり、見逃したくない場合は、SNS-SQS-Lambdaにアクセスしてください

SQSはSNSのようなラムダをトリガーできないと述べました。頻繁にSQSをポーリングする必要があります

編集:

AWSは2018年6月28日にLambdaサポートをトリガーするSQSを発表しました。したがって、頻繁にキューをポーリングする必要はもうありません。 SQSへの新しいアイテムはLambdaをトリガーできます

25

SQSはLambdaを呼び出しません。 SQSは何も呼び出すことができません。 SQSでLambdaを使用している人は、1分に1回など、イベントタイマーでLambdaを実行しています。関数が実行されるたびに、SQSをポーリングして、処理するメッセージがあるかどうかを確認します。

キューに入れる必要がなく、同時に実行されるLambda関数が多すぎるのを防ぐ場合、SQSのようなキューシステムは必要ありません。

3
Mark B

イベントソースとしてSQSを使用できるようになりました

AWS LambdaはサポートされているイベントソースにAmazon Simple Queue Serviceを追加します

2
alexs

ここで@Arafat Nalkhandeの答えに追加するのは、SQSのラムダのいくつかの利点です

  1. SQSでは delay を指定できるため、しばらくしてメッセージが処理されるため、データが利用可能になるまでに時間がかかるシナリオで役立ちます。

  2. SQSはコンティンジェンシーストアとして機能します。たとえば、ダウンストリームサービスが利用できない場合、メッセージは15日間sqsに保持できます。

1
best wishes