ある企業が、Amazon CloudFront を使って動的コンテンツ(API レスポンス)と静的コンテンツ(画像・CSS・JS)を一つのドメインで配信したい。静的コンテンツは長期間キャッシュし、動的コンテンツはキャッシュせずに毎回オリジンにリクエストを転送したい。最も適切な設定はどれか。
- A. CloudFront の 1 つのディストリビューション内で複数のキャッシュビヘイビアを設定する。静的コンテンツのパスパターン(例: /static/*)にはキャッシュ TTL を長く設定し、API パス(例: /api/*)にはキャッシュを無効化(TTL = 0)したビヘイビアを設定する。
- B. CloudFront ディストリビューションを 2 つ作成し、静的コンテンツ用と動的コンテンツ用に分ける。それぞれ別のドメインを使用する。
- C. 静的コンテンツは S3 に配置して CloudFront でキャッシュし、動的コンテンツは ALB に直接アクセスさせる。
- D. CloudFront の Lambda@Edge を使って、リクエストごとにキャッシュするかどうかを動的に判定する。
解答と解説を見る
正解: A
CloudFront のキャッシュビヘイビア(Cache Behaviors)を使うと、パスパターンに基づいて異なるキャッシュ設定を 1 つのディストリビューション内で実現できる。静的コンテンツには長い TTL を設定してキャッシュヒット率を最大化し、API パスには TTL = 0 またはキャッシュ無効化ポリシーを設定することで毎回オリジンに転送できる。単一ドメインで両方を実現できる。選択肢Bはディストリビューションを 2 つ作成するため管理コストが増え、単一ドメインの要件を満たさない。選択肢DのLambda@Edge は追加の開発・管理コストが発生し、CloudFront のビルトイン機能(キャッシュビヘイビア)で実現できることに Lambda を使う必要はない。選択肢Cは動的コンテンツを ALB に直接アクセスさせるため、CloudFront の単一ドメイン経由での配信という要件を満たさない。
📚 関連サービスの解説: Amazon CloudFront