Q20 — AWS SAA-C03 第4章
第 20/105 問 | ← 第4章
Q215. ある企業には、以下のコンポーネントからなるデータ取り込みワークフローがあります: ・新しいデータ配信に関する通知を発行する Amazon Simple Notification Service(Amazon SNS)トピック ・データを処理し、メタデータを記録する AWS Lambda 関数 このワークフローは、ネットワーク接続の問題により時折失敗します。このような障害が発生した場合、担当者が手動でジョブを再実行しない限り、Lambda 関数は対応するデータを取り込みません。ソリューションアーキテクトは、今後すべてのデータが確実に Lambda 関数によって取り込まれるよう、どのような組み合わせの対応策を講じるべきでしょうか?(該当するものを 2 つ選択してください。)
- A. Lambda 関数を複数の可用性ゾーンにデプロイする。
- B. Amazon Simple Queue Service(Amazon SQS)キューを作成し、それを SNS トピックにサブスクライブする。 ✓
- C. Lambda 関数に割り当てる CPU およびメモリ量を増加させる。
- D. Lambda 関数のプロビジョニング済みスループットを増加させる。
- E. Lambda 関数を変更して、Amazon Simple Queue Service(Amazon SQS)キューから読み込むようにする。 ✓
正解: B. Amazon Simple Queue Service(Amazon SQS)キューを作成し、それを SNS トピックにサブスクライブする。, E. Lambda 関数を変更して、Amazon Simple Queue Service(Amazon SQS)キューから読み込むようにする。
解説
ネットワーク接続障害による失敗を防ぎ、データの欠落を回避するには、非同期かつ耐障害性のあるメッセージング層を導入する必要があります。SNS は「ファイア・アンド・フォーゲット」方式のプッシュ型サービスであり、Lambda 関数への呼び出しが失敗するとメッセージは失われます。これを解決するには、SNS から SQS キューへメッセージを送信(B)し、Lambda 関数が SQS キューからポーリングして処理する(E)という構成が推奨されます。SQS はメッセージの永続化と再試行機能を提供し、一時的な障害に対してもメッセージを保持・再配信できます。A は Lambda の高可用性向上に寄与しますが、ネットワーク障害による呼び出し失敗そのものを防ぐものではなく、メッセージロストの根本原因を解決しません。C および D は Lambda のパフォーマンスやスケーリングに関係しますが、ネットワーク接続の不安定さによる失敗を直接緩和しません(また、Lambda には「プロビジョニング済みスループット」という概念は存在しません)。