誰かが説明を手伝ってくれるなら、ワークフローでSQSが必要かどうかを理解しようとしています。私のアプリでは、アクションが実行されると、SNSトピックに情報を送信し、LAMBDAを呼び出して処理を行います。これはそのままでうまく機能しています。
私がオンラインで調査すると、SNSがSQSに情報を入力し、SQSがLAMBDAを呼び出す場所でも、このスタックでSQSを使用しているようです。
私が理解しようとしているのは、これにおけるSQSの必要性だと思います。 SNSから直接LAMBDAを呼び出すと、どのような価値が追加されますか、言い換えれば、何が失われますか?
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をトリガーできます
SQSはLambdaを呼び出しません。 SQSは何も呼び出すことができません。 SQSでLambdaを使用している人は、1分に1回など、イベントタイマーでLambdaを実行しています。関数が実行されるたびに、SQSをポーリングして、処理するメッセージがあるかどうかを確認します。
キューに入れる必要がなく、同時に実行されるLambda関数が多すぎるのを防ぐ場合、SQSのようなキューシステムは必要ありません。
イベントソースとしてSQSを使用できるようになりました
AWS LambdaはサポートされているイベントソースにAmazon Simple Queue Serviceを追加します
ここで@Arafat Nalkhandeの答えに追加するのは、SQSのラムダのいくつかの利点です
SQSでは delay を指定できるため、しばらくしてメッセージが処理されるため、データが利用可能になるまでに時間がかかるシナリオで役立ちます。
SQSはコンティンジェンシーストアとして機能します。たとえば、ダウンストリームサービスが利用できない場合、メッセージは15日間sqsに保持できます。