はじめに
AWS Solutions Architect Associate (SAA) の学習中に整理した Amazon CloudFront と AWS Global Accelerator の知識をまとめました。
この2つは「グローバルにコンテンツを配信・高速化する」という点で似ていますが、用途は明確に異なります。試験ではその使い分けが頻繁に問われます。
本記事は個人の学習ノートをベースにしています。誤りがあればコメントでご指摘いただけると助かります。
Amazon CloudFront
主要機能
| 機能 | 説明 |
|---|---|
| マルチオリジンルーティング | コンテンツタイプ(パスパターン)に基づいて異なるオリジンに振り分け |
| Origin Group | プライマリ + セカンダリオリジンでフェイルオーバー(HA) |
| Field Level Encryption | POST リクエストの特定フィールドをエッジで暗号化(最大10フィールド) |
| Geo Restriction | 地理的位置に基づくアクセス制限 |
| Price Class | エッジロケーションのコスト制御 |
| WAF 統合 | エッジロケーションで攻撃ブロック |
CloudFront の重要ルール
- ACM 証明書は us-east-1 のみ(S3 バケットのリージョンに関係なく)
- ルーティング基準 = コンテンツタイプ(パスパターン)のみ(Price Class ではない)
- HA / フェイルオーバー = Origin Group(Geo Restriction ではない)
- 機密データ保護 = Field Level Encryption(KMS ではない)
OAI vs OAC
| OAI(旧) | OAC(新・推奨) | |
|---|---|---|
| 読み取り(GET) | ✅ | ✅ |
| 書き込み(PUT/POST) | ❌ | ✅ |
| SSE-KMS | ❌ | ✅ |
アップロード対応が必要なら OAC が必須です。
CloudFront に関連付けられるもの / できないもの
| リソース | CloudFront |
|---|---|
| WAF ACL | ✅ |
| OAI / OAC | ✅ |
| Security Group | ❌ |
| NACL | ❌ |
AWS Global Accelerator
特徴
- 2つの静的エニーキャスト IP アドレス
- AWS グローバルネットワーク経由(パブリックインターネットより高速)
- TCP / UDP サポート
- 自動フェイルオーバー(数秒)
- トラフィックダイヤルでリージョンごとのトラフィック割合を制御
- エンドポイント: ALB、NLB、EC2、Elastic IP
Global Accelerator vs CloudFront
| Global Accelerator | CloudFront | |
|---|---|---|
| 主な用途 | TCP/UDP アプリ高速化 + フェイルオーバー | 静的/動的コンテンツ CDN |
| 静的 IP | ✅(2つ) | ❌ |
| 自動フェイルオーバー | ✅ 数秒 | △ オリジンフェイルオーバー |
| キャッシュ | ❌ | ✅ |
| プロトコル | TCP/UDP | HTTP/HTTPS |
判断のポイントです。
- 静的/キャッシュ可能コンテンツ → CloudFront
- 動的 API / 非 HTTP(ゲーム、IoT、VoIP) → Global Accelerator
- 静的 IP が必要 → Global Accelerator
- UDP → Global Accelerator(CloudFront は HTTP/HTTPS のみ)
Global Accelerator を選ぶシグナル
- マルチリージョン + 自動フェイルオーバー
- グローバルユーザー + 低レイテンシー
- 静的 IP が必要(ファイアウォール許可リスト等)
- TCP / UDP アプリケーション
- DNS キャッシュの影響を回避したい
試験で問われる設計パターン
CloudFront 系
CloudFront の機能: ルーティング、セキュリティ、HA
シナリオ: CloudFront の機能として正しいものを3つ選んでください。
正解:
- コンテンツタイプに基づいて複数オリジンにルーティング
- Origin Group でフェイルオーバー(HA)
- Field Level Encryption で機密フィールドを暗号化
- ルーティング基準はコンテンツタイプ(Price Class ではない)
- HA は Origin Group(Geo Restriction ではない)
静的サイト + サーバーレス + 高パフォーマンス → S3 + CloudFront + Route 53
シナリオ: 静的ウェブサイトをサーバーレスで高パフォーマンスに配信したいです。どの構成が最適でしょうか?
正解: S3(静的ホスティング)+ CloudFront(CDN)+ Route 53(エイリアス)
- Lambda でウェブホスティングは不可
- EC2 / オンプレはサーバーレスではない
S3 アウトバウンドデータ転送コスト削減 → CloudFront
シナリオ: S3 からインターネットへのデータ転送コストが高額です。コストを削減するにはどうすべきでしょうか?
正解: CloudFront を S3 の前に配置
- S3 → CloudFront は無料
- CloudFront → インターネットは S3 直接より安い
- エッジキャッシュにより S3 へのリクエスト数自体が減る
動的コンテンツ + 10倍スパイク → ASG(CloudFront ではない)
シナリオ: 高度に動的で頻繁に変更されるコンテンツを配信しています。トラフィックが10倍にスパイクする場合、どの方法でスケールすべきでしょうか?
正解: Auto Scaling Group
- 「高度に動的で頻繁に変更」→ CloudFront はキャッシュが効かない
- 動的コンテンツのスケーリングは ASG
CloudFront + S3 アップロード + カスタムドメイン HTTPS → OAC + ACM(us-east-1)
シナリオ: CloudFront + S3 の構成でファイルアップロードに対応し、カスタムドメインで HTTPS を使いたいです。必要な設定は?(2つ選択)
正解:
- OAC を有効化(PUT/POST に必要)
- ACM 証明書を us-east-1 で作成
- CloudFront の ACM 証明書は us-east-1 のみ
- S3 静的ウェブサイトエンドポイントは GET/HEAD のみ
CloudFront 経由のみで S3 アクセス → OAI/OAC + バケットポリシー
シナリオ: S3 バケットへの直接アクセスを禁止し、CloudFront 経由のみでアクセスさせたいです。
正解: OAI(または OAC)を作成 + S3 バケットポリシーを更新
- S3 にセキュリティグループは存在しない
- CloudFront に IAM ロールは付けられない
CloudFront + S3 で IP 制限 → OAI/OAC + WAF IP Match
シナリオ: CloudFront + S3 構成で、特定の IP アドレスからのアクセスのみ許可したいです。(2つ選択)
正解:
- OAI + S3 バケットポリシーで OAI のみ許可
- WAF ACL で IP Match 条件を作成 + CloudFront に関連付け
- CloudFront には SG / NACL を関連付けできない
SQLインジェクション + XSS 対策 → WAF + CloudFront
シナリオ: アプリケーションを SQL インジェクションや XSS 攻撃から保護したいです。
正解: AWS WAF + CloudFront
- WAF = SQLi / XSS フィルタリング
- Shield = DDoS 保護(SQLi / XSS ではない)
Global Accelerator 系
複数リージョンの ALB + ファイアウォール IP 許可 → Global Accelerator
シナリオ: 複数リージョンの ALB を使っていますが、クライアントのファイアウォールに固定 IP を登録する必要があります。設定変更を最小にする方法は?
正解: Global Accelerator → 2つの静的 IP でファイアウォール設定
- ALB は EIP 不可(IP が変動する)
単一リージョン API のグローバルレイテンシー改善(移行なし)→ Global Accelerator
シナリオ: 単一リージョンにデプロイした動的 API に対して、グローバルユーザーのレイテンシーを改善したいです。アプリの移行は行いたくないです。
正解: Global Accelerator を既存 API の前に配置
- 動的 API → CloudFront はキャッシュが効かない
- アプリ複製はコスト高
- マルチリージョン API Gateway は複雑
Blue/Green + DNS キャッシュ問題 → Global Accelerator
シナリオ: Blue/Green デプロイで DNS キャッシュにより切り替えが遅延しています。即座に切り替える方法は?
正解: Global Accelerator
- 静的 IP → DNS キャッシュの影響なし
- Route 53 は TTL キャッシュの影響あり
UDP + 低レイテンシー + グローバル配信 → Global Accelerator
シナリオ: UDP ベースのゲームアプリをグローバルに低レイテンシーで配信したいです。
正解: AWS Global Accelerator
- CloudFront は HTTP/HTTPS のみ(UDP 不可)
TCP + UDP + グローバル → Global Accelerator + NLB
シナリオ: TCP と UDP の両方を使うアプリケーションをグローバルに展開したいです。
正解:
- Global Accelerator + LB 配下の EC2 を登録
- 各リージョンに NLB(TCP + UDP)
- UDP → NLB(ALB は HTTP/HTTPS のみ)
- PrivateLink は TCP のみ
マルチリージョン + 低レイテンシー + 自動フェイルオーバー → Global Accelerator
シナリオ: マルチリージョンのアプリケーションで低レイテンシーと自動フェイルオーバーを実現したいです。
正解: AWS Global Accelerator
- Direct Connect はエンドユーザー向けではない
- Route 53 Geoproximity は TTL 依存で切り替えが遅い
おわりに
CloudFront と Global Accelerator は「グローバル配信」という点で似ていますが、使い分けは明確です。「キャッシュが効く静的/準静的コンテンツ → CloudFront」「動的 API / TCP/UDP / 静的 IP が必要 → Global Accelerator」という判断ができれば、試験で迷うことはなくなります。
間違いや補足があればぜひコメントで教えてください。