SNS + Lambda vs SNS + SQS + Lambda

Published: 2022/10/4


SNS の通知に対して Lambda で処理を行うとき、 SNS に Lambda を直接 subscribe させて、処理を行うか、 SNS と Lambda の間に SQS を挟むかの技術的な選択余地がある。 特に、SNS であってもリトライの機構は存在するので、わざわざ追加の構造である SQS を入れるメリットが自明ではなかったので、それについて調べたメモ。 基本的に、次のスタックオーバーフローの記事のまとめとなる。

SQS のメリット

  • DLQ の再処理を行う場合には、 redrive を行うだけで良い。
    • 一方 SNS 直の場合は DLQ の処理系を別途に用意する必要がある。
  • retry の policy をより制御可能。
  • delay の利用が可能
  • queue のバッチ化の機能を利用するならば、 lambda の起動回数を減らすことができる。
    • node 等で処理する場合には、特に効いてきそう。

逆に、これらメリットに該当しないケースであるならば、 SNS から直で lambda であっても問題はない。


Tags: awsaws-sqsaws-lambda

関連記事