AWS Certified Solutions Architect Associate(SAA-C03) 練習問題 53:メッセージング:エラー処理
Amazon SQSとAWS Lambdaを組み合わせて非同期処理を行っていますが、一部のメッセージがアプリケーションのエラーによって正常に処理されず、リトライが繰り返されています。このような処理に失敗したメッセージを分離し、後でトラブルシューティングを行えるようにするための最も適切な方法はどれか。
- AWS Lambdaの関数タイムアウト時間を延長して、処理が完了するまで待機するように設定する。
- Amazon SQSのデッドレターキューを設定し、指定回数失敗したメッセージを移動させる。
- Amazon SQSのメッセージ保持期間を最大値に変更し、メッセージが消えないように保護する。
- Amazon EventBridgeを使用して、エラー発生時に管理者にメール通知を送るよう設定する。
- AWS X-Rayを有効化して、メッセージの処理経路とエラーの根本原因を自動的に分析・修正する。
正解と解説を見る
正解は、Amazon SQSのデッドレターキューを設定し、指定回数失敗したメッセージを移動させるアプローチです。
【正解の理由】
デッドレターキュー(DLQ)は、Amazon SQSにおいて正常に処理できなかったメッセージを隔離するための機能です。メッセージの受信回数(Maximum Receives)のしきい値を設定し、これを超過したメッセージを自動的にDLQへ移動させることで、無限ループによるリソースの浪費を防ぎ、後から開発者が失敗したメッセージの内容を分析してトラブルシューティングを行うことができます。
【不正解の理由】
• 「AWS Lambdaの関数タイムアウト時間を延長して、処理が完了するまで待機するように設定する」という説明は誤り。アプリケーションのロジックエラーや不正なデータが原因の場合、タイムアウトを延ばしても処理は成功せず、コストとリソースの無駄になります。
• 「Amazon SQSのメッセージ保持期間を最大値に変更し、メッセージが消えないように保護する」という説明は誤り。保持期間を延ばすだけでは、エラーの原因となるメッセージがキュー内に残り続け、延々とリトライが繰り返されてしまいます。
• 「Amazon EventBridgeを使用して、エラー発生時に管理者にメール通知を送るよう設定する」という説明は誤り。通知を送ること自体は可能ですが、失敗したメッセージ自体をメインの処理ラインから分離して保持する解決策にはなりません。
• 「AWS X-Rayを有効化して、メッセージの処理経路とエラーの根本原因を自動的に分析・修正する」という説明は誤り。X-Rayは分散アプリケーションのトラブルシューティングに役立つトレースツールですが、システムを自動的に修正したり、不正なメッセージを分離したりする機能はありません。