コンテンツにスキップ

Amazon CloudFront

1. サービス概要

Amazon CloudFront は、グローバルに分散配置されたエッジロケーションからコンテンツを配信する、AWS の CDN (Content Delivery Network) サービスである。
Web サイト、動画配信、API リクエストなどのコンテンツを世界中のユーザーに対して高速・安全に届けることが可能で、レイテンシの低減や帯域幅最適化、DDoS 対策機能も備えている。

主なユースケースとして、

  • 静的・動的コンテンツの配信 (HTML、CSS、JavaScript、画像、動画など)
  • ライブストリーミング (HLS/DASH)
  • API アクセラレータ
  • S3 オリジンの大規模配信

などが挙げられる。
自動スケーリングとエッジキャッシュにより、ピーク時でも高い可用性を維持する。

2. 主な特徴と機能

2.1 グローバルエッジネットワーク

CloudFront は世界各地に配置された数百のエッジロケーションとリージョナルエッジキャッシュを活用し、ユーザーに最も近い場所からコンテンツを配信する。
これにより、ネットワーク遅延を大幅に低減し、高速なレスポンスを実現する。

2.2 多様なオリジンのサポート

Amazon S3、EC2、AWS Media Services といった AWS リソースに限らず、オンプレミスサーバや他クラウド上の HTTP サーバもオリジンとして設定できる。
動的コンテンツや API リクエストのキャッシュ制御を柔軟に行い、キャッシュヒット率の最適化やパススルー設定も可能である。

2.3 セキュリティ強化

CloudFront は AWS Shield や AWS WAF との連携により、DDoS 攻撃や Web アプリケーション攻撃からの保護を提供する。
また、HTTPS/TLS による暗号化通信、オリジンアクセスアイデンティティ (OAI) での S3 バケット保護など、セキュリティ要件にも柔軟に対応できる。

2.4 カスタマイズ性とオプション

Lambda@Edge や CloudFront Functions を使うことで、リクエスト/レスポンスのリアルタイム変更やカスタム認証・リダイレクト処理が可能である。
Geo Restriction を設定して特定の国からのアクセスを制限するなど、CDN レベルでの柔軟な制御もサポートされている。

2.5 可観測性とレポート

CloudFront のアクセスログを S3 に出力し、Athena や EMR、Kinesis Data Analytics などで解析可能である。
また、リアルタイムメトリクスや CloudWatch と連携したモニタリング機能を使い、配信状況やキャッシュヒット率を可視化できる。

3. アーキテクチャおよび技術要素

  1. ユーザーが Web サイトやアプリケーションにアクセスすると、DNS ルックアップにより最寄りの CloudFront エッジロケーションへ接続
  2. エッジロケーションがキャッシュを保持していれば即時レスポンスし、なければオリジンサーバへリクエストを転送
  3. オリジンからのコンテンツがエッジロケーションへ返され、キャッシュされる (TTL や Cache-Control ヘッダーに基づく)
  4. 以降のユーザーリクエストはキャッシュを利用し、高速かつ効率的に配信される
  5. セキュリティポリシーに応じて WAF ルールや Geo Restriction、Lambda@Edge/CloudFront Functions を適用し、リクエストを動的に制御

これにより、高速コンテンツ配信と DDoS 対策を含む多層防御が可能となり、ユーザーエクスペリエンスとアプリケーションセキュリティを両立させる。

4. セキュリティと認証・認可

CloudFront のセキュリティ要件は以下を中心に構築する:

  • HTTPS/TLS エンドポイント: 独自ドメインに ACM 発行の SSL 証明書を設定し、暗号化通信を実現
  • OAI (オリジンアクセスアイデンティティ): S3 バケットへの直接アクセスを制限し、CloudFront 経由のみ許可
  • WAF 連携: OWASP Top 10 などの Web 攻撃シグネチャに対するブロック/モニタリングを設定
  • AWS Shield: 標準の DDoS 緩和機能に加え、Shield Advanced で保護を強化
  • Geo Restriction: 特定リージョンや国からのアクセスをホワイトリスト/ブラックリストで制御

5. 料金形態

Amazon CloudFront の料金は以下の要素に基づく:

  • データ転送量: 地域ごとに異なる GB 単価で、エッジロケーションからのアウトバウンドデータを従量課金
  • リクエスト数: HTTP/HTTPS リクエストあたり数百万リクエスト単位で課金
  • Lambda@Edge / CloudFront Functions: リクエスト数や実行時間に応じた追加料金
  • SSL 証明書利用: ACM を使用した基本的な証明書発行は無料

6. よくあるアーキテクチャ・設計パターン

CloudFront を活用した代表的なパターンは以下の通りである:

  • 静的 Web サイト配信: S3 + CloudFront で世界中に低コストかつ高速なサイトを配信
  • 動的コンテンツ&API アクセラレーション: ALB や EC2 をオリジンにし、キャッシュ制御と WAF 保護を付与
  • メディアストリーミング: HLS、DASH による映像配信を CloudFront 経由でグローバルに提供
  • セキュアな S3 直リンク保護: OAI で S3 バケットへの直アクセスを遮断し、CloudFront 経由のみ許可
  • Lambda@Edge/Functions でヘッダー操作: 署名付き URL や A/B テストなどをエッジで実行

7. 設定・デプロイ手順 (ハンズオン例)

  1. AWS コンソールで「Amazon CloudFront」を検索し、「Create Distribution」を選択
  2. オリジンに S3 バケットまたは独自ドメインの HTTP サーバを指定
  3. キャッシュ動作(Default Cache Behavior)を設定し、Viewer Protocol Policy(HTTP→HTTPS リダイレクトなど)を決定
  4. 必要に応じてカスタムドメイン名と ACM 証明書を指定
  5. オプションで Geo Restriction や WAF 設定を行う
  6. 「Create Distribution」をクリックし、ステータスが「Deployed」になるまで待機。完成後、CloudFront ドメインで動作確認

8. 試験で問われやすいポイント

8.1 キャッシュコントロールとオリジン設定

  • TTL 設定: Default TTL、Min/Max TTL などでキャッシュ期間を制御
  • Cache-Control ヘッダー: Cache-Control、Expires を使ったブラウザ側キャッシュ管理
  • オリジンパス設定: サブディレクトリを指定し、一部のみ CloudFront 経由で配信する

8.2 セキュリティとアクセスポリシー

  • HTTPS Only: 強制 HTTPS リクエストによりセキュアな通信を徹底
  • OAI: S3 バケットポリシーで CloudFront からのアクセスのみ許可
  • 署名付き URL/Cookies: 有効期限付き URL を発行し、限定的なアクセス制御を実施

8.3 Lambda@Edge/CloudFront Functions

  • Lambda@Edge: Viewer Request/Response、Origin Request/Response の各タイミングでカスタムコード実行
  • CloudFront Functions: 超軽量かつ低コストのスクリプトを実行し、ヘッダー操作やリダイレクトなどを高速に実施
  • ユースケース: A/B テスト、GeoIP 判定、動的リダイレクト、カスタム認証など

8.4 Geo Restriction

  • Blacklist/Whitelist: 国ごとに配信を許可・拒否
  • 実装: CloudFront 設定画面で簡単に追加・削除可能

8.5 料金を最適化する方法

  • 有効なキャッシュ戦略: キャッシュヒット率を上げることでデータ転送量を削減
  • エッジロケーション選択: 一部のリージョンを除外する (Geo Restriction など) ことで不要な転送を抑制
  • Lambda@Edge の効率化: スクリプト実行回数やコードサイズを最小化

8.6 試験で頻出となる具体的な問われ方と答え

  • Q: CloudFront を使うメリットは?
  • A: グローバルエッジロケーションからの高速配信、DDoS 保護、キャッシュによるコスト最適化が得られる。
  • Q: S3 バケットを保護したい場合は?
  • A: OAI (Origin Access Identity) を設定し、CloudFront 経由のみアクセスを許可。
  • Q: HTTP を HTTPS にリダイレクトしたい場合は?
  • A: ビューアプロトコルポリシーを「Redirect HTTP to HTTPS」に設定。
  • Q: Web アプリへの攻撃を防ぎたい場合は?
  • A: AWS WAF を CloudFront のディストリビューションにアタッチして攻撃シグネチャをブロック。
  • Q: 動的コンテンツのキャッシュ制御はどう行う?
  • A: Cache-Control ヘッダーや Lambda@Edge でのヘッダー操作を使い、キャッシュ可否・TTL を柔軟に調整。