Q30 — AWS SAA-C03 第2章
第 30/65 問 | ← 第2章
Q95. ある企業が、Amazon API Gateway API によって呼び出される AWS Lambda 関数上でアプリケーションをホストしています。これらの Lambda 関数は、顧客データを Amazon Aurora MySQL データベースに保存します。データベースのアップグレード中、Lambda 関数はアップグレード完了までデータベース接続を確立できず、その結果、一部のイベントにおける顧客データが記録されません。ソリューションアーキテクトは、データベースアップグレード中に生成された顧客データを一時的に保存するソリューションを設計する必要があります。この要件を満たすソリューションはどれですか?
- A. Lambda 関数とデータベースの間に Amazon RDS Proxy をプロビジョニングし、Lambda 関数が RDS Proxy に接続するよう設定します。
- B. Lambda 関数の実行時間を最大値まで延長し、コード内に再試行メカニズムを実装して顧客データをデータベースに保存します。
- C. 顧客データを Lambda のローカルストレージに永続化し、新しい Lambda 関数を設定してローカルストレージをスキャンし、顧客データをデータベースに保存します。
- D. 顧客データを Amazon Simple Queue Service (Amazon SQS) FIFO キューに保存し、キューをポーリングして顧客データをデータベースに保存する新しい Lambda 関数を作成します。 ✓
正解: D. 顧客データを Amazon Simple Queue Service (Amazon SQS) FIFO キューに保存し、キューをポーリングして顧客データをデータベースに保存する新しい Lambda 関数を作成します。
解説
データベースアップグレード中に接続が一時的に失われる状況において、顧客データの喪失を防ぐには、非同期かつ耐障害性のある一時保存機構が必要です。選択肢 D では、SQS FIFO キューがメッセージの順序保証と重複防止を提供し、別途作成した Lambda 関数がキューからデータを安全に取得・処理することで、データベースが利用可能になるまで待機できます。これは、アップグレード中の一時的な接続不可を許容する最も堅牢な設計です。一方、A は接続プーリングやフェイルオーバーを支援しますが、アップグレード中(特に書き込み不可状態)の接続確立自体を保証せず、データ喪失を防げません。B はタイムアウトや再試行回数の制限により、長時間のアップグレードに対応できません。C は Lambda のローカルストレージ(/tmp)は一時的で、関数インスタンスのライフサイクルに依存し、永続性やスケーラビリティがなく、信頼性が低いため不適切です。