DVAトラブルシューティングと最適化

REST API(API Gateway + Lambda)で、商品カタログを返すGETエンドポイントがあります。同一のクエリパラメータによるリクエストが多数を占め、データは1時間ほぼ変化しません。バックエンドのLambda実行回数とコストを削減し、レスポンスを高速化したいと考えています。最小限の構成変更で実現する最も適切な方法はどれですか。

A
API Gatewayのステージでキャッシュを有効化し、クエリパラメータをキャッシュキーに含めてTTLを設定する
✓ 正解
API Gatewayのステージキャッシュを有効にすると、指定したキャッシュキー(クエリパラメータ)ごとにレスポンスをTTLの間キャッシュしLambdaを呼ばずに返す。実行回数とコストを削減し高速化でき、構成変更も最小限で済む。
B
Lambdaにプロビジョニングされた同時実行を設定してコールドスタートを削減する
プロビジョニング済み同時実行はコールドスタートを減らすが、リクエストごとにLambdaは実行され続けるため実行回数とコストは削減されない。むしろ常時課金が発生し割高になる。
C
Lambda関数内でグローバル変数に結果をメモリキャッシュし、TTLを実装する
各Lambda実行環境は分離されておりキャッシュが共有されない。実行環境が多数あると命中率が低く、そもそもLambda自体は毎回起動するため実行回数とコストの削減効果は限定的となる。
D
CloudFrontディストリビューションを新規作成し、オリジンをLambda関数URLに変更する
CloudFront追加とオリジン再構成は変更が大きく、既存のAPI Gateway統合を置き換える必要がある。最小限の変更という要件に反し、API Gatewayのキャッシュ機能で十分に対応できる。

解説

API Gatewayのステージキャッシュを有効にすると、指定したキャッシュキー(ここではクエリパラメータ)ごとにレスポンスをTTLの間キャッシュし、バックエンドのLambdaを呼ばずに返す。 Lambda実行回数とコストを削減でき、レスポンスも高速化される。設定はステージ単位の有効化のみで構成変更が最小限。 選択肢Bと選択肢Cは実行回数を減らせない。 選択肢Dは変更が大きい。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
DVA の問題一覧に戻る