Open3

SQS駆動Lambda

beatsbeats
  • Lambdaはキューをポーリングする
  • 関数は同期的に呼び出される
  • 正常に処理が終わるとメッセージは削除される
  • Lamdaの同時実行数は同一アカウントの同一リージョン内につき、1000
    • 上限緩和申請可能
    • 関数単位で同時実行数の指定可能
  • 可視性タイムアウトはLambdaのタイムアウトの6倍推奨
    • 可視性タイムアウトの方が短いと、関数終了前に処理中のメッセージがキューに現れる可能性あり
  • TODO: ロングポーリング
  • TODO: メッセージ最大受信
  • TODO: 関数エラー時
  • TODO: スロットリング

https://blog.nijohando.jp/post/2020/sqs-lambda-throttling-error/
https://www.sunnycloud.jp/column/20210818-01/
https://dev.classmethod.jp/articles/lambda-serial-processing-by-sqs/

beatsbeats

Lambda がバッチを読み取る際、メッセージはキューに留まりますが、キューの可視性タイムアウトの間は非表示になります。関数が正常にバッチを処理すると、Lambda はそのメッセージをキューから削除します。関数がスロットリングされた、エラーを返した、または応答しなかった場合は、メッセージが再び表示されるようになります。失敗したバッチのすべてのメッセージはキューに戻るため、関数コードが副作用なしで同じメッセージを複数回処理できることが必要となります。

  • エラーやスロットル発生後はキューに戻る
  • エラーやスロットルで戻ったメッセージは可視性タイムアウト後に処理される
  • 同じメッセージグループIDでFIFOなので、並列で実行したい単位でメッセージグループIDを設定する

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-sqs.html