無限ノック › DVA 練習問題一覧 › 問題
DVAAWSのサービスを使用した開発複数選択

開発者が DynamoDB Streams をトリガーとして Lambda 関数でレコードを処理しています。Lambda 関数が特定のレコードでエラーを返すと、同じバッチが繰り返し再試行され、シャードの処理がブロックされる問題が発生しています。失敗したレコードのみをスキップして処理を継続しながら、最終的に失敗したレコードを SQS デッドレターキューに送信するための Lambda イベントソースマッピングの設定として正しいものを 2 つ選択してください。

A
FunctionResponseTypes に ReportBatchItemFailures を追加し、Lambda 関数が失敗した個別レコードの識別子をレスポンスで返せるようにする
✓ 正解
ReportBatchItemFailures を FunctionResponseTypes に設定すると、Lambda 関数は失敗したアイテムの識別子リストをレスポンスに含めることができ、バッチ全体ではなく失敗レコードのみが再試行されます。DestinationConfig の On Failure 設定により、最大再試行回数を超えたレコードが SQS キューに送信されます。この 2 つの組み合わせにより、失敗レコードを精密に分離しながら処理継続と DLQ への転送を同時に実現できます。
B
DestinationConfig でオンフェイラー (On Failure) の送信先として SQS キューを設定する
✓ 正解
ReportBatchItemFailures を FunctionResponseTypes に設定すると、Lambda 関数は失敗したアイテムの識別子リストをレスポンスに含めることができ、バッチ全体ではなく失敗レコードのみが再試行されます。DestinationConfig の On Failure 設定により、最大再試行回数を超えたレコードが SQS キューに送信されます。この 2 つの組み合わせにより、失敗レコードを精密に分離しながら処理継続と DLQ への転送を同時に実現できます。
C
BisectBatchOnFunctionError を有効にし、エラー時にバッチを半分に分割して再試行する
BisectBatchOnFunctionErrorはバッチを二分割して問題を絞り込む手法ですが精度が低いです。
D
MaximumRetryAttempts を 0 に設定し、再試行を完全に無効化することでブロックを防ぐ
MaximumRetryAttempts=0 は DLQ 転送なしにすべてのレコードをスキップしてしまいます。

解説

ReportBatchItemFailures を FunctionResponseTypes に設定すると、Lambda 関数は失敗したアイテムの識別子リストをレスポンスに含めることができ、バッチ全体ではなく失敗レコードのみが再試行されます。DestinationConfig の On Failure 設定により、最大再試行回数を超えたレコードが SQS キューに送信されます。この 2 つの組み合わせにより、失敗レコードを精密に分離しながら処理継続と DLQ への転送を同時に実現できます。 選択肢CのBisectBatchOnFunctionErrorはバッチを二分割して問題を絞り込む手法ですが精度が低いです。 選択肢DのMaximumRetryAttempts=0 は DLQ 転送なしにすべてのレコードをスキップしてしまいます。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る