開発者が DynamoDB Streams をトリガーとして Lambda 関数でレコードを処理しています。Lambda 関数が特定のレコードでエラーを返すと、同じバッチが繰り返し再試行され、シャードの処理がブロックされる問題が発生しています。失敗したレコードのみをスキップして処理を継続しながら、最終的に失敗したレコードを SQS デッドレターキューに送信するための Lambda イベントソースマッピングの設定として正しいものを 2 つ選択してください。
ReportBatchItemFailures を FunctionResponseTypes に設定すると、Lambda 関数は失敗したアイテムの識別子リストをレスポンスに含めることができ、バッチ全体ではなく失敗レコードのみが再試行されます。DestinationConfig の On Failure 設定により、最大再試行回数を超えたレコードが SQS キューに送信されます。この 2 つの組み合わせにより、失敗レコードを精密に分離しながら処理継続と DLQ への転送を同時に実現できます。 選択肢CのBisectBatchOnFunctionErrorはバッチを二分割して問題を絞り込む手法ですが精度が低いです。 選択肢DのMaximumRetryAttempts=0 は DLQ 転送なしにすべてのレコードをスキップしてしまいます。