AWSロードマップ

Web表示を高速化!AWS CloudFrontで実現するCDNキャッシュ戦略とは?

AWS CloudFrontは、CDN(Content Delivery Network)として静的コンテンツや動的コンテンツを世界中のエッジロケーションを通じて高速配信するためのサービスです。本記事では、CloudFrontの基本概念、設定方法、キャッシュ戦略について解説します。


1. CDN(Content Delivery Network)とは?

CDNとは、ユーザーの地理的な位置に応じて、最も近いサーバーからコンテンツを配信する技術です。

CDNのメリット

コンテンツ配信の高速化:エッジロケーションを利用し、遅延を最小化

オリジンサーバーの負荷軽減:キャッシュを活用し、オリジンへのリクエスト数を削減

高可用性と耐障害性:分散されたネットワークによりサービスの継続性を向上

セキュリティ強化:DDoS攻撃対策やSSL/TLSによる暗号化が可能


2. AWS CloudFrontの基本

AWS CloudFrontは、AWSが提供するCDNサービスで、S3やEC2などのAWSリソースだけでなく、外部のオリジンサーバーとも連携可能です。

CloudFrontの主要なコンポーネント

コンポーネント説明
オリジン(Origin)コンテンツの元となるサーバー(S3, EC2, ALB, カスタムサーバーなど)
ディストリビューション(Distribution)CloudFrontが管理する配信設定の単位
エッジロケーション(Edge Location)世界中に配置されたキャッシュサーバー
キャッシュビヘイビア(Cache Behavior)キャッシュのポリシーを制御するルール

CloudFrontの主なユースケース

  • S3 + CloudFront:静的ウェブサイトの高速配信
  • EC2/ALB + CloudFront:動的コンテンツの最適化
  • Lambda@Edge:リクエストやレスポンスを動的に処理

3. CloudFrontの設定手順

S3をオリジンとするCloudFrontの作成(AWSマネジメントコンソール)

  1. S3バケットを作成
    • バケットの作成(my-static-site など)
    • 公開設定は「プライベート」のまま
  2. CloudFrontディストリビューションの作成
    • AWSマネジメントコンソールで CloudFront を開く
    • 「ディストリビューションを作成」をクリック
    • オリジンの設定 → オリジンタイプに「S3バケット」を指定
    • デフォルトのキャッシュ動作 → 「キャッシュ可能」なコンテンツを設定
    • CNAME(カスタムドメイン) → 必要に応じて設定
    • SSL/TLS証明書 → AWS Certificate Manager (ACM) で管理
  3. ディストリビューションをデプロイし、提供されたCloudFrontのURLを使用してアクセスを確認

AWS CLIでCloudFrontディストリビューションを作成

aws cloudfront create-distribution --origin-domain-name my-static-site.s3.amazonaws.com

4. CloudFrontのキャッシュ戦略

CloudFrontのキャッシュ設定を適切に行うことで、パフォーマンスとコストの最適化が可能です。

キャッシュポリシーの設定

CloudFrontのキャッシュ動作は、以下の要素によって決まります。

設定項目説明
TTL(Time To Live)キャッシュの有効期間(デフォルト24時間)
キャッシュキーURLパス、クエリパラメータ、ヘッダーなど
圧縮Gzip/Brotliによるデータ圧縮

キャッシュ設定の最適化例

aws cloudfront update-distribution --id EXAMPL3D1ST --default-cache-behavior "{ \\"MinTTL\\": 3600, \\"DefaultTTL\\": 86400, \\"MaxTTL\\": 31536000 }"

動的コンテンツの最適化(オリジンリクエストポリシー)

  • 静的コンテンツ(画像、CSS、JS) → キャッシュTTLを長め(例:7日以上)
  • 動的コンテンツ(APIレスポンス) → キャッシュTTLを短め(例:1分~1時間)
  • ログインページやパーソナライズされたページ → キャッシュしない設定

キャッシュの無効化(Invalidation)

CloudFrontのキャッシュを即座にクリアするには、Invalidation を使用します。

aws cloudfront create-invalidation --distribution-id EXAMPL3D1ST --paths "/index.html"

5. CloudFront + Lambda@Edge の活用

Lambda@Edgeを活用すると、CloudFrontリクエストの前後で動的な処理を追加できます。

ユースケース

動的なリダイレクト(例:国ごとのページへリダイレクト)

セキュリティ強化(例:JWTトークンの検証)

カスタムレスポンスヘッダーの追加

Lambda@Edgeの簡単なコード例(リダイレクト処理)

'use strict';
exports.handler = async (event) => {
    const response = event.Records[0].cf.response;
    response.headers['x-custom-header'] = [{ key: 'X-Custom-Header', value: 'Hello World' }];
    return response;
};

CloudFrontの動作を変更できるため、高度なカスタマイズが可能です。


6. まとめ

CloudFrontとCDNを活用することで、

  • Webサイトの表示速度向上(エッジロケーションによるキャッシュ)
  • サーバー負荷の軽減(オリジンへのリクエスト削減)
  • セキュリティの強化(DDoS防御、TLS暗号化)

次のステップでは、「DynamoDB(NoSQL)のデータモデリングとインデックス設計」について詳しく解説していきます!

-AWSロードマップ
-, , , , , , , , ,