【正解】B
【0からの解説】
要件は「外部 API のエラー率が 1 時間あたり 5% を超えたときにのみ、ほぼリアルタイムで SNS 通知」です。これは CloudWatch のカスタムメトリクス + CloudWatch アラームの典型パターンです。Lambda から PutMetricData で「成功数」「失敗数(エラー)」などをカスタムメトリクスとして発行し、CloudWatch アラームでメトリクス演算(失敗 ÷ 全体)を用いてエラー率を算出、しきい値 5%・評価期間 1 時間でアラームを構成します。アラームのアクションに既存 SNS トピックを指定すれば、しきい値超過時に即座に通知が飛びます。マネージドで低レイテンシ、運用も簡潔です。
【誤りの選択肢】
A:ログを書き込み、別の Lambda をスケジュール実行して Logs Insights でクエリしてしきい値判定する方式は、ポーリング間隔ぶんの遅延と自作ロジックの保守負荷があり、「ほぼリアルタイム」かつシンプルという点で劣ります。
C:すべての結果を新しい SNS トピックに発行すると成功も失敗も全件通知されてしまい、「エラー率 5% 超過時のみ」という条件付き通知を実現できません。
D:S3 + Athena の定期クエリはバッチ的でレイテンシが大きく、また Athena 自体がしきい値超過で SNS に通知する機能を持たないため要件を満たせません。
【参考】
CloudWatch カスタムメトリクスの発行CloudWatch アラームの使用