Open3
SQS駆動Lambda
- Lambdaはキューをポーリングする
- 関数は同期的に呼び出される
- 正常に処理が終わるとメッセージは削除される
- Lamdaの同時実行数は同一アカウントの同一リージョン内につき、1000
- 上限緩和申請可能
- 関数単位で同時実行数の指定可能
- 可視性タイムアウトはLambdaのタイムアウトの6倍推奨
- 可視性タイムアウトの方が短いと、関数終了前に処理中のメッセージがキューに現れる可能性あり
- TODO: ロングポーリング
- TODO: メッセージ最大受信
- TODO: 関数エラー時
- TODO: スロットリング
Lambda がバッチを読み取る際、メッセージはキューに留まりますが、キューの可視性タイムアウトの間は非表示になります。関数が正常にバッチを処理すると、Lambda はそのメッセージをキューから削除します。関数がスロットリングされた、エラーを返した、または応答しなかった場合は、メッセージが再び表示されるようになります。失敗したバッチのすべてのメッセージはキューに戻るため、関数コードが副作用なしで同じメッセージを複数回処理できることが必要となります。
- エラーやスロットル発生後はキューに戻る
- エラーやスロットルで戻ったメッセージは可視性タイムアウト後に処理される
- 同じメッセージグループIDでFIFOなので、並列で実行したい単位でメッセージグループIDを設定する
- コンテナイメージで起動するLambda関数は早い