Q25 — AWS SAP-C02 第3章

第 25/75 問 | ← 第3章

Q250. ある企業が、グローバルなスケーラビリティとパフォーマンスを実現するために Amazon CloudFront を活用した複雑なWebアプリケーションを運用しています。しかし、時間の経過とともにユーザーからアプリケーションの応答が遅くなっているとの報告が寄せられています。同社のオペレーションチームによると、CloudFront のキャッシュヒット率が着実に低下しているとのことです。キャッシュメトリクスのレポートでは、一部のURLにおけるクエリ文字列のパラメータ順序が一貫しておらず、また大文字小文字が混在している場合とすべて小文字になっている場合があることが示されています。 キャッシュヒット率をできるだけ迅速に向上させるために、ソリューションアーキテクトが実施すべきアクションの組み合わせはどれですか?

正解: A. Lambda@Edge 関数をデプロイし、パラメータ名で並べ替えてすべて小文字に変換する処理を実装します。この関数は CloudFront の Viewer Request トリガーで呼び出されるように設定します。

解説

選択肢Aが、キャッシュヒット率をできるだけ迅速に向上させるための最適なアクションです。この解決策では、Lambda@Edge 関数をデプロイしてクエリパラメータを名前順に並べ替え、すべて小文字に正規化します。これにより、クエリ文字列の一貫性が確保され、CloudFront による効果的なキャッシュが可能になります。この関数は CloudFront の Viewer Request トリガーで起動されるよう設定することで、すべてのリクエストに対して実行され、クエリ文字列が適切に正規化されます。 選択肢Bは理想的ではありません。クエリ文字列パラメータに基づくキャッシュを無効化すると、クエリ文字列を含むレスポンスがキャッシュされなくなり、結果としてパフォーマンスの低下とレイテンシの増加を招きます。 選択肢Cは、ロードバランサの後にリバースプロキシを導入してアプリケーションが出力するURLを小文字に変換するというものです。これはアプリケーションへの大幅な変更と追加のインフラストラクチャを必要とし、実現可能かどうかや実用性に課題があります。 選択肢Dは、CloudFront ディストリビューションを更新してクエリ文字列の大文字小文字を区別しない処理を有効にするというものです。しかし、この方法ではパラメータの順序不一致や大文字小文字の混在といった根本的な問題は解決されません。大文字小文字の違いを無視して同一のクエリパラメータとみなすことはできますが、並び順の正規化は行われません。 CloudFront がキャッシュからコンテンツを提供する前に、Viewer Request に関連付けられた Lambda 関数が実行されるため、ここでクエリパラメータの正規化(並び順の統一・小文字化)を行うのが最も効果的です。