SAA-C03弾力性に優れたアーキテクチャの設計HARD単一選択

ある企業が、Amazon SNS を使ってメッセージを複数の AWS Lambda 関数と Amazon SQS キューにファンアウト配信している。本番環境で Lambda のサブスクリプション配信が失敗することがあるが、失敗したメッセージを確実に保持して再処理できるようにしたい。最も適切な設定はどれか。

  1. A. SNS のサブスクリプションに再試行ポリシーを設定して、最大 23 回リトライする(合計最大 23 時間 20 分のリトライ期間)。
  2. B. SNS サブスクリプションのデッドレターキュー(DLQ)を設定する。すべてのリトライが失敗した場合に、メッセージが DLQ(SQS キュー)に転送される。
  3. C. Lambda 関数に try-catch を実装して例外をすべてキャッチし、SNS に成功レスポンスを返す。
  4. D. CloudWatch アラームを設定して SNS の配信失敗を検知し、手動でメッセージを再送する。
解答と解説を見る

正解: B

Amazon SNS のサブスクリプションレベルの DLQ(Dead Letter Queue)機能を使うと、すべてのリトライポリシーが尽きても配信できなかったメッセージを SQS DLQ に自動転送する。DLQ に蓄積されたメッセージは後から分析・再処理できる。この機能は SNS の Lambda・HTTP・SQS サブスクリプションに設定できる。選択肢Aの再試行ポリシーは失敗時のリトライには有効だが、最終的に配信できなかったメッセージを保持する仕組みがなく、メッセージが失われる可能性がある。DLQ との組み合わせが完全な解決策となる。選択肢Cのすべての例外をキャッチして成功レスポンスを返すことは、エラーを握りつぶして処理失敗を隠蔽することになり、問題の根本解決ではない。選択肢Dの手動再送はリアルタイムの自動保全要件を満たさず、担当者が不在の間に失われたメッセージを救出できない。

▸ この試験を本気で演習する(全150問・無料)