Amazon CloudFront

世界 450 以上のエッジロケーションからコンテンツを低レイテンシで配信するグローバル CDN サービス

概要

Amazon CloudFront は、世界中に分散した 450 以上のエッジロケーション (PoP) を通じて、Web サイト、API、動画、静的ファイルなどのコンテンツをエンドユーザーに低レイテンシで配信するコンテンツデリバリネットワーク (CDN) サービスです。オリジンサーバー (S3、EC2、ALB、カスタムオリジンなど) のコンテンツをエッジロケーションにキャッシュし、ユーザーに最も近いエッジから配信することで、レスポンスタイムを大幅に短縮します。Lambda@Edge や CloudFront Functions を使えば、エッジロケーションでリクエスト/レスポンスの加工処理を実行でき、A/B テスト、URL リライト、ヘッダー操作などをオリジンに負荷をかけずに実現できます。AWS Shield Standard による DDoS 防御が無料で統合されており、AWS WAF と組み合わせることで Web アプリケーションのセキュリティも強化できます。

キャッシュポリシーと TTL の設計

CloudFront のパフォーマンスはキャッシュ戦略の設計に左右されます。Cache Policy でキャッシュキーに含めるヘッダー、クエリ文字列、Cookie を選択し、不要な要素を除外することでキャッシュヒット率を高めます。静的コンテンツ (画像、CSS、JS) には長い TTL (例: 1 年) を設定し、ファイル名にコンテンツハッシュを含めるバージョニング方式でキャッシュ無効化を管理するのが定石です。動的コンテンツ (API レスポンス) にはキャッシュを無効化するか、短い TTL を設定します。Origin Request Policy を使えば、キャッシュキーとは独立してオリジンに転送するヘッダーやクエリ文字列を制御でき、キャッシュヒット率を維持しながら必要な情報をオリジンに渡せます。Origin Shield を有効にすると、リージョナルエッジキャッシュの前段にキャッシュレイヤーが追加され、オリジンへのリクエスト数をさらに削減できます。

Lambda@Edge と CloudFront Functions の使い分け

CloudFront にはエッジで処理を実行する 2 つの仕組みがあり、処理の複雑さに応じて選択します。CloudFront Functions は JavaScript のみ対応で、実行時間は 1 ミリ秒以下に制限されますが、リクエストあたりのコストが極めて低く、URL リライト、ヘッダー操作、簡易なリダイレクトに最適です。Lambda@Edge は Node.js と Python をサポートし、最大 30 秒の実行時間で外部 API 呼び出しやデータベース参照を含む複雑な処理が可能です。A/B テスト、認証トークンの検証、画像の動的リサイズなどに向いています。両者はリクエスト/レスポンスの 4 つのイベントポイント (Viewer Request、Origin Request、Origin Response、Viewer Response) にアタッチでき、処理の挿入位置も柔軟に選べます。CDN 設計の書籍 (Amazon) では、エッジコンピューティングの実践パターンが体系的に解説されています。

セキュリティとコスト構造

CloudFront には AWS Shield Standard による DDoS 防御が無料で統合されており、L3/L4 レベルの攻撃を自動的に緩和します。AWS WAF と組み合わせれば、SQL インジェクションやクロスサイトスクリプティングなど L7 レベルの攻撃もブロックできます。OAC (Origin Access Control) を設定すれば、S3 バケットへの直接アクセスを遮断し、CloudFront 経由のアクセスのみを許可する構成が実現できます。コスト面では、S3 オリジンからのデータ転送が無料である点が大きな利点です。Azure CDN は 1 GB あたりの配信単価がわずかに安い場合がありますが、S3 オリジン転送無料を考慮するとトータルコストで CloudFront が有利になるケースが多いです。最初の 1 TB のデータ転送は無料利用枠 (12 か月間) に含まれるため、小規模サイトであれば実質無料で運用できます。

共有するXB!