Q93 — AWS DVA-C02 第3章
第 93/100 問 | ← 第3章
開発者は、JSON ファイルとして Amazon S3 オブジェクトにデータを格納するアプリケーションを設計しました。その後、AWS Lambda 関数内のカスタムビジネスロジックがそのオブジェクトを処理し、Lambda 関数がデータを Amazon DynamoDB テーブルに読み込みます。最近、ワークロードのトラフィックに急激かつ顕著な変化が生じました。DynamoDB テーブルへのデータフローがレート制限されています。開発者は、この制限を解消し、データをより一貫性のある方法で DynamoDB テーブルに読み込むソリューションを実装したいと考えています。どのソリューションがこれらの要件を満たしますか?
- A. Lambda 関数を2つの関数に再構成します。1つはデータ変換用、もう1つは DynamoDB テーブルへのデータ読み込み用です。関数間で Amazon Simple Queue Service (Amazon SQS) キューを作成し、アイテムをメッセージとして保存して2番目の関数を呼び出します。
- B. DynamoDB テーブルで Auto Scaling を有効化します。Amazon CloudWatch を使用してテーブルの読み取りおよび書き込みキャパシティメトリクスを監視し、消費されたキャパシティを追跡します。
- C. Lambda 関数にエイリアスを作成します。アプリケーションで使用する事前プロビジョニングされた同時実行数を設定します。
- D. Lambda 関数を2つの関数に再構成します。1つは DynamoDB テーブルへのデータ保存用、もう1つはデータ保存後の処理および項目更新用です。DynamoDB ストリームを作成し、データ保存後に2番目の関数を呼び出します。 ✓
正解: D. Lambda 関数を2つの関数に再構成します。1つは DynamoDB テーブルへのデータ保存用、もう1つはデータ保存後の処理および項目更新用です。DynamoDB ストリームを作成し、データ保存後に2番目の関数を呼び出します。
解説
正解は D です。Lambda 関数を2つの独立した関数に分割することで、各関数の責任範囲とリソース使用量をより適切に管理・制御できます。1つ目の関数は DynamoDB テーブルへのデータ保存に専念し、2つ目の関数はデータ保存後の追加処理および更新を担当します。DynamoDB ストリームは、テーブル内のデータ変更(新規項目の挿入、更新、削除など)をキャプチャするように設計されています。このケースでは、ストリームを使って2番目の Lambda 関数をトリガーし、新しく挿入されたデータを処理および関連するビジネスロジックを実行できます。これにより、データの一貫性のある読み込みが保証され、同期呼び出しによる依存を減らす非同期処理が可能になります。選択肢 A について:SQS キューを用いた非同期処理は有効ですが、DynamoDB ストリームはテーブルのデータ変更を直接検知するため、より自然で緊密な統合が可能です。以上より、Lambda 関数の分離と DynamoDB ストリームの活用という点で、選択肢 D が最も適切なソリューションです。