開発者はSQS標準キューでトリガーされるLambda関数を構築しています。Lambda関数の処理時間は約45秒ですが、同じメッセージが複数回処理される問題が発生しています。SQSキューの可視性タイムアウト(Visibility Timeout)は30秒に設定されています。この問題を解決するための適切な対策はどれですか?
可視性タイムアウトは、メッセージが処理中に他のコンシューマーから見えなくなる時間です。Lambda処理(45秒)より可視性タイムアウト(30秒)が短いため、処理完了前にメッセージが再度キューに見えてしまい、別のLambdaインスタンスが同じメッセージを取得します。可視性タイムアウトはLambda関数タイムアウトの6倍以上にすることがAWSのベストプラクティスです。 選択肢Aの[ロングポーリング]は[空のポーリングを減らすだけで重複処理の問題は解決しない]。 選択肢Cの[SQS FIFOキュー]は[重複排除機能がありますが、既に発生している重複処理問題の根本原因(可視性タイムアウト不足)を解決するものではない]。 選択肢Dの[Reserved Concurrency]は[同時実行数を制限するだけで可視性タイムアウトの問題は解決しない]。