エラーハンドリング(非同期呼び出しの自動再試行)難易度 標準無料
S3のイベント通知をトリガーに非同期起動されるLambda関数が、一時的な下流サービスの障害により実行時エラーを返した。DLQ・on-failure destinationはまだ設定していない。このときのLambdaの挙動として最も適切なものを選べ。(単一選択)
- ALambdaは自動的に最大2回まで再試行する(初回呼び出しと合わせ最大3回の試行)。すべて失敗しDLQ/on-failure destinationが未設定の場合、失敗イベントは自動保存されない
- B非同期呼び出しであっても、Lambdaは同期呼び出しと同様に自動的な再試行を一切行わない。呼び出し元(S3)が独自に再試行を実装する必要がある
- Cエラーが発生すると即座に無限に再試行を続け、成功するかイベントの経過時間の上限(既定6時間)に達するまで止まらない
- Dエラーが発生すると自動的に関数のコンカレンシー設定が0に変更され、それ以上の呼び出しがすべて拒否されるようになる
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済
解説
非同期呼び出し(S3、SNS、EventBridge等がトリガーとなるケース)でハンドラーがエラーを返す(または関数が異常終了する)と、 Lambdaは自動的に最大2回まで再試行する(初回呼び出し+既定で2回のリトライ=合計最大3回の試行)。
- 再試行の間には遅延(バックオフ)が設けられる。再試行回数は
MaximumRetryAttempts(0〜2)で減らすことができ、MaximumEventAgeInSecondsでイベントが再試行対象となる最大経過時間を制御できる。 - すべての試行が失敗し、かつDLQやon-failure destinationが未設定の場合、そのイベントは(設定によっては)破棄され、 自動的な失敗イベントの保存は行われない。運用上はDLQまたはDestinationsの設定が強く推奨される。
- これに対し、API Gateway経由などの同期呼び出しではLambda自身は自動リトライを行わない点と対比して押さえておく。
- B非同期呼び出しにはLambda組み込みの自動再試行(既定で最大2回)が存在する。呼び出し元の実装に依存する話ではない。
- C再試行回数は既定で最大2回(
MaximumRetryAttemptsで0〜2に調整可能)であり、無限リトライではない。また、イベントの経過時間の上限(MaximumEventAgeInSeconds)は既定で6時間(21600秒、設定可能範囲は60秒〜21600秒)であり、7日間ではない。 - Dエラー発生によって同時実行数の設定が自動変更されることはない。これは関数のkill switchとして手動で行う操作である。
ひっかけ: 「同期呼び出しと同じくLambdaは再試行しない(B)」は誤り。非同期呼び出しには既定で自動再試行(最大2回)がある。
呼び出しタイプ(同期/非同期/ポーリングベース)によってエラー時の挙動が異なることを混同しないこと。
公式ドキュメント・関連AWS Lambda Developer Guide ― Asynchronous invocation↗AWS Lambda Developer Guide ― Error handling for asynchronous invocations↗
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)