Q93 — AWS DVA-C02 第3章

第 93/100 問 | ← 第3章

開発者は、JSON ファイルとして Amazon S3 オブジェクトにデータを格納するアプリケーションを設計しました。その後、AWS Lambda 関数内のカスタムビジネスロジックがそのオブジェクトを処理し、Lambda 関数がデータを Amazon DynamoDB テーブルに読み込みます。最近、ワークロードのトラフィックに急激かつ顕著な変化が生じました。DynamoDB テーブルへのデータフローがレート制限されています。開発者は、この制限を解消し、データをより一貫性のある方法で DynamoDB テーブルに読み込むソリューションを実装したいと考えています。どのソリューションがこれらの要件を満たしますか?

正解: D. Lambda 関数を2つの関数に再構成します。1つは DynamoDB テーブルへのデータ保存用、もう1つはデータ保存後の処理および項目更新用です。DynamoDB ストリームを作成し、データ保存後に2番目の関数を呼び出します。

解説

正解は D です。Lambda 関数を2つの独立した関数に分割することで、各関数の責任範囲とリソース使用量をより適切に管理・制御できます。1つ目の関数は DynamoDB テーブルへのデータ保存に専念し、2つ目の関数はデータ保存後の追加処理および更新を担当します。DynamoDB ストリームは、テーブル内のデータ変更(新規項目の挿入、更新、削除など)をキャプチャするように設計されています。このケースでは、ストリームを使って2番目の Lambda 関数をトリガーし、新しく挿入されたデータを処理および関連するビジネスロジックを実行できます。これにより、データの一貫性のある読み込みが保証され、同期呼び出しによる依存を減らす非同期処理が可能になります。選択肢 A について:SQS キューを用いた非同期処理は有効ですが、DynamoDB ストリームはテーブルのデータ変更を直接検知するため、より自然で緊密な統合が可能です。以上より、Lambda 関数の分離と DynamoDB ストリームの活用という点で、選択肢 D が最も適切なソリューションです。