SQSキュー(VisibilityTimeout=30秒)からメッセージを受信して処理するLambda関数がある。 平均処理時間は45秒だが、同一メッセージが複数回処理されてしまう問題が断続的に発生している。 最も適切な解決策はどれか?
VisibilityTimeout(30秒)が処理時間(45秒)より短いため、処理が完了する前にメッセージが再び可視状態になり、別のコンシューマーが同じメッセージを取得しています。AWSのベストプラクティスでは、VisibilityTimeoutはLambdaのタイムアウト値の少なくとも6倍に設定することが推奨されています。 選択肢B:Reserved Concurrencyを1にするとスループットが大幅に低下し根本解決になりません。 選択肢C:MessageRetentionPeriod の短縮は古いメッセージを削除しますが重複処理対策にはなりません。 選択肢D:FIFOキューへの変更は順序保証であり重複処理の直接的な解決策ではありません。