DVAトラブルシューティングと最適化

SQSキューをイベントソースとするLambda関数があります。Lambda関数内でエラーが発生して処理に失敗したメッセージを、調査のために別のキューに隔離したいと考えています。最も適切な設定はどれですか?

A
SQSキュー自体にデッドレターキュー(DLQ)を設定し、maxReceiveCountを適切な値に設定する
✓ 正解
SQSをイベントソースとするLambdaはポーリングベースの同期呼び出しです。処理失敗メッセージの隔離はSQSキュー側のDLQとmaxReceiveCount(最大受信回数)で制御する必要があります。
B
Lambda関数の非同期呼び出し設定でデッドレターキュー(DLQ)を設定する
Lambda 関数の非同期呼び出し設定でのDLQ設定は非同期呼び出し(S3、SNS等)にのみ適用され、SQSトリガーには機能しません。
C
Lambda関数の送信先(Destination)に失敗時のSQSキューを設定する
Lambda 関数の送信先(Destination)に失敗時のSQSキューを設定する方法も、非同期呼び出しにのみ適用され、SQSイベントソース使用時は機能しません。
D
Lambda関数内でtry-catchを使用し、エラー発生時に手動でDLQキューへメッセージを送信するコードを追加する
Lambda 関数内での手動DLQ送信は実装コストが高く、SQSの標準機能である DLQ とmaxReceiveCountで十分です。

解説

SQSをイベントソースとするLambdaはポーリングベースの同期呼び出しです。処理失敗メッセージの隔離はSQSキュー側のDLQとmaxReceiveCount(最大受信回数)で制御する必要があります。 選択肢Bの Lambda 関数の非同期呼び出し設定でのDLQ設定は非同期呼び出し(S3、SNS等)にのみ適用され、SQSトリガーには機能しません。 選択肢Cの Lambda 関数の送信先(Destination)に失敗時のSQSキューを設定する方法も、非同期呼び出しにのみ適用され、SQSイベントソース使用時は機能しません。 選択肢Dの Lambda 関数内での手動DLQ送信は実装コストが高く、SQSの標準機能である DLQ とmaxReceiveCountで十分です。

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

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

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