無限ノック › DOP 練習問題一覧 › 問題
DOPインシデントとイベントへの対応

ある企業のイベント駆動型注文処理システムでは、非同期呼び出しのLambda関数が最大リトライ後も失敗するケースがあります。DevOpsチームは以下の要件を満たすエラー処理を実装したいと考えています: ①失敗イベントの完全なペイロードと詳細なエラーコンテキスト(リクエストID・試行回数等)を保持する、 ②スロットリングエラーは再処理キュー(SQS)に送り、ランタイムエラーはアラート通知(SNS)に振り分ける、 ③成功時は後続のLambda関数を起動する、 ④最大試行回数と最大イベント経過時間を設定する。最も適切な実装方法はどれですか?

A
Lambda関数にDead Letter Queue(SQS DLQ)を設定して失敗イベントをDLQに送信し、DLQをトリガーとする別のLambda関数でエラータイプを判定してスロットリングは再処理用SQSへ、ランタイムエラーはSNSアラートへ振り分け、成功時は後続Lambda関数を起動する
SQS DLQは非同期呼び出しの失敗イベントのみを受け取る仕組みで、成功時の後続Lambda起動には対応できません。またDLQメッセージには元イベントは入りますが、Destinationsほど詳細なエラーコンテキスト(試行回数・リクエストID等)が含まれず要件を完全には満たしません。
B
Lambda Destinationsを設定し、失敗時の転送先にAmazon EventBridgeイベントバスを指定する。EventBridgeルールでエラー条件(errorType)によりSQSとSNSに動的ルーティングする。成功時の転送先に後続Lambda関数を指定し、最大試行回数と最大イベント経過時間を非同期呼び出し設定で構成する
✓ 正解
Lambda Destinationsは非同期関数の成功・失敗それぞれに転送先(Lambda/SNS/SQS/EventBridge)を個別設定でき、失敗時はエラー情報・元ペイロード・試行回数・リクエストIDを含む詳細コンテキストを転送します。EventBridge経由でerrorTypeによる動的ルーティングも実現でき、最大試行回数と最大イベント経過時間も非同期設定で構成できる最適解です。
C
Lambda関数内のtry-catchでエラータイプと完全なペイロードをDynamoDBテーブルに記録し、EventBridgeスケジューラで定期的にテーブルをポーリングしてスロットリングはSQSへ、ランタイムエラーはSNSへ振り分け、成功イベントは後続Lambda関数へ連携する
DynamoDBへ記録しEventBridgeスケジューラでポーリングする方式はイベント駆動でなくリアルタイム性が低く振り分けに遅延が生じます。また記録・ポーリング・振り分けを自前実装する必要があり、Destinationsの標準機能に比べ運用負荷とコストが高くなります。
D
AWS Step Functionsのステートマシンを構築し、LambdaタスクのCatchブロックでエラータイプ別に分岐させてスロットリングはSQSへ、ランタイムエラーはSNSへ送信し、成功時は後続Lambda関数を起動して最大試行回数と経過時間、詳細なエラーコンテキストをステート定義で管理する
Step FunctionsのCatchでエラー分岐や3アクション制御は可能ですが、既存の非同期呼び出しをステートマシン起点のワークフローへ作り替える必要があり、実装・移行コストが高くDestinationsより過剰な構成になります。

解説

Lambda Destinationsは非同期関数の成功・失敗それぞれに転送先(Lambda/SNS/SQS/EventBridge)を個別設定でき、失敗時にはエラー情報・元イベントペイロード・試行回数・リクエストIDを含む詳細コンテキストが転送されます。EventBridgeを転送先にするとルールのeventパターンでerrorTypeを参照した動的ルーティングが実現できます。最大試行回数(0〜2回)と最大イベント経過時間(60秒〜21600秒)も非同期呼び出し設定で構成可能です。 選択肢Aの(SQS DLQ)は失敗時のみ対応で成功時の後続処理転送ができず、DestinationsほどのエラーコンテキストがDLQメッセージに含まれません。 選択肢Cの(DynamoDB)ポーリングはリアルタイム性が低いです。 選択肢Dの(AWS Step Functions)は有効ですが既存の非同期呼び出しパターンを変更する必要があり実装コストが高いです。

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

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

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