Q59 — AWS DVA-C02 第3章
第 59/100 問 | ← 第3章
ある開発者は、Amazon SQS API を使用して Amazon Simple Queue Service (Amazon SQS) キューからメッセージを読み取る AWS Lambda 関数を実装しています。バックエンドの依存関係に起因するランダムな障害により、Lambda 関数がすべてのメッセージを正常に処理できていません。開発者は、Lambda 関数の信頼性を高め、バックエンドの依存関係が失敗した場合でも各メッセージを確実に処理できるようにする必要があります。 この要件を最小限の労力で満たす最も適切な解決策はどれですか?
- A. サードパーティ依存関係への呼び出しを例外処理ブロック内に移動します。例外ハンドラ内でサードパーティ依存関係の障害がキャッチされた場合、メッセージをSQSキューに再書き込みします。
- B. Lambda 関数内のコードを更新し、SQS SDK の ReceiveMessage 関数呼び出しを削除します。Lambda 関数を SQS キューをイベントソースとして使用するように設定します。SQS キューの再ドライブポリシーの maxReceiveCount 値を少なくとも 5 に設定します。
- C. デッドレターキューとして機能する第2の SQS キューを作成します。元の SQS キューに再ドライブポリシーを設定し、失敗したメッセージをデッドレターキューに送信します。Lambda 関数を変更し、2つのキューからメッセージを読み取るようにします。
- D. デッドレターキューとして機能する第2の SQS キューを作成します。サードパーティ依存関係への呼び出しを例外処理ブロック内に移動します。例外ハンドラ内でサードパーティ依存関係の失敗がキャッチされた場合、メッセージをデッドレターキューに書き込みます。 ✓
正解: D. デッドレターキューとして機能する第2の SQS キューを作成します。サードパーティ依存関係への呼び出しを例外処理ブロック内に移動します。例外ハンドラ内でサードパーティ依存関係の失敗がキャッチされた場合、メッセージをデッドレターキューに書き込みます。
解説
Lambda 関数の信頼性を最小限の労力で向上させ、サードパーティ依存関係の障害時にもメッセージが確実に処理されるようにするためのベストプラクティスは、例外処理とデッドレターキューの組み合わせです。選択肢 D はこの2つを完全に満たしており、まずサードパーティ依存関係への呼び出しを例外処理ブロック内に配置することで障害を確実にキャッチし、次に失敗したメッセージをデッドレターキューに書き込むことで、メインロジックが失敗してもメッセージが失われることを防ぎます。これにより、メッセージの信頼性が保証され、コードロジックも簡素化されるため、最適な選択肢です。 【灯笼考证提供:swufelp1999】