DVA-C02:AWS Certified Developer - Associate AWS サービスを用いた開発 問5
AWS サービスを用いた開発/AWS Lambda のコード開発非同期に呼び出される Lambda 関数で、処理に失敗したイベントを失わずに後から調査・再処理できるようにしたいと考えています。最も適切なのはどれですか。
当サイトのオリジナル問題(DVA-C02:AWS Certified Developer - Associateの出題範囲「AWS サービスを用いた開発」に対応。実際の試験問題ではありません)
- A送信先(Lambda Destinations)やデッドレターキュー(DLQ)を設定し、失敗したイベントを SQS/SNS などへ送って保持する
- B失敗は無視し、ログを出すだけにする
- Cすべて同期呼び出しに変更して、失敗時の対応をクライアントに任せる
- Dメモリを増やせば失敗しなくなると考え、対策はしない
正解:A
解説
非同期に呼び出された Lambda の処理が失敗した場合、何も設定していないとイベントが失われることがあります。Lambda の送信先(Lambda Destinations)やデッドレターキュー(DLQ)を設定すると、失敗したイベントを SQS や SNS などへ送って保持でき、後から調査・再処理できます。
選択肢ごとの解説
- A正しい。Lambda Destinations や DLQ を設定すれば、失敗イベントを保持して後から調査・再処理できます。
- B誤り。失敗を無視してログだけ出すと、失敗したイベントそのものを再処理できません。
- C誤り。同期呼び出しへの変更は設計を大きく変え、非同期処理の利点を失います。要件の解決策としても適切ではありません。
- D誤り。メモリ増量は一部の失敗には効きますが、失敗イベントの保持・再処理の仕組みにはなりません。