概要
世界中のユーザーにアプリケーションを速く届けたいとき、AWS で候補に挙がるのが Amazon CloudFront と AWS Global Accelerator です。どちらも世界中に広がる AWS のエッジロケーションを入口に使うため、名前だけで覚えていると取り違えやすいサービスです。
両者を分ける手がかりは、エッジでコンテンツをキャッシュするかどうかと、どの種類の通信を扱うかです。CloudFront はウェブコンテンツ(HTTP / HTTPS)をエッジにキャッシュして配信する CDN、Global Accelerator はキャッシュをせず、TCP / UDP の通信を固定のエニーキャスト IP で受けて AWS のグローバルネットワーク経由でエンドポイントへ運ぶサービスです。
この記事では、2 つのサービスをキャッシュの有無・対象プロトコル・固定 IP・フェイルオーバー・典型的なユースケースで比較表にまとめ、あわせて Amazon Route 53 のルーティングポリシー(レイテンシー・フェイルオーバー)との組み合わせ方と、名前の似ている Amazon S3 Transfer Acceleration の位置づけを整理します。AWS Certified Cloud Practitioner(CLF)の「ネットワークとコンテンツ配信」に当たる内容で、AWS Certified Solutions Architect – Associate(SAA)で問われる「高パフォーマンス」「高可用性」の設計判断の土台にもなります。
クラウドおさる猿山からバナナを遠くの里へ届けるのに、里の近くに倉庫を置くか、猿山専用の近道を通すか、という話でござるな。どちらが合うかを確かめるでござる。


—
この記事のメリット
- CloudFront と Global Accelerator の違いを、キャッシュの有無と対象プロトコルから説明できます
- 「固定 IP が必要」「UDP を使う」「静的コンテンツを配信したい」といった要件から、どちらを選ぶか判断できます
- 2 つのサービスのフェイルオーバーの仕組みの違いを把握できます
- Route 53 のレイテンシールーティング・フェイルオーバールーティングとの役割の違いを整理できます
- S3 Transfer Acceleration が何をするサービスかを、似ているサービスとの対比で説明できます
—
執筆者とキャラクター紹介
執筆者:土肥(とひ)
株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。


クラウドおさる



はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。



基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。



猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。
技術解説
CloudFront ── エッジでキャッシュして配る



とひさん、CloudFront と Global Accelerator は、どちらも「エッジロケーションを使って速くする」と聞いたでござる。同じものではないのでござるか?
入口がエッジロケーションなのは同じなんだけど、そこでやっていることが違うんだ。まず CloudFront から見ていこう。CloudFront は、.html や .css、.js、画像ファイルのような静的・動的なウェブコンテンツの配信を速くするサービスだよ。



どうやって速くするのでござるか?
ユーザーがコンテンツをリクエストすると、いちばん低いレイテンシーで応答できるエッジロケーションに振り分けられる。そのエッジにコンテンツがもうあれば、すぐに返すんだ。なければ、S3 バケットやウェブサーバーといった オリジン から取ってきて返す。一度取ってきたものはエッジに保持されるから、次の人からは速くなるわけだね。既定では 24 時間保持されて、この期間は設定で変えられるよ。



なるほど、里の近くにバナナの出張倉庫を置いておけば、毎回猿山まで取りに戻らずに済むのでござるな!
そうそう、その通り! ちなみに CloudFront の料金は、エッジロケーションからのデータ転送と、HTTP / HTTPS リクエストの数で決まるんだ。つまり CloudFront が扱うのは、ウェブの通信(HTTP / HTTPS)ということでもあるね。
ドキュメントに挙がっている CloudFront の主な使い方は次のとおりです。
| 使い方 | 内容 |
|---|---|
| 静的ウェブサイトの配信の高速化 | 画像・スタイルシート・JavaScript などを世界中に速く配る。S3 バケットをオリジンにする構成が定番 |
| 動画のオンデマンド配信・ライブ配信 | MPEG DASH や Apple HLS などの形式の動画を配信。ライブ配信ではメディアのフラグメントをエッジにキャッシュしてオリジンの負荷を減らす |
| エッジでのカスタマイズ | Lambda@Edge でエッジでコードを実行し、応答をカスタマイズする |
| プライベートコンテンツの配信 | 署名付き URL・署名付き Cookie で、見られる人を限る |
Global Accelerator ── 固定 IP で受けて AWS のネットワークで運ぶ



では Global Accelerator は、何をエッジに置くのでござるか?
Global Accelerator は、エッジに コンテンツを置かない んだ。かわりに、アクセラレーターを作ると 2 つの静的 IPv4 アドレス が払い出される(デュアルスタックなら IPv4 と IPv6 が 2 つずつ)。この IP は AWS のエッジネットワークから エニーキャスト で広告されていて、ユーザーの通信はいちばん近いエッジロケーションで受け止められるよ。



受け止めたあとは、どうなるのでござる?
そこから先は、混み合うインターネットではなく、AWS のグローバルネットワークを通ってエンドポイントまで運ばれるんだ。エッジで TCP 接続をいったん終端して、エンドポイントとは新しい接続を張るから、レイテンシーが下がってスループットが上がる。運び先のエンドポイントには、Application Load Balancer、Network Load Balancer、EC2 インスタンス、Elastic IP アドレスを指定できるよ(標準アクセラレーターの場合)。



出張倉庫ではなく、里の入口から猿山まで専用の近道を引くようなものでござるな。荷物そのものは毎回猿山から運ぶのでござる。
いい例えだね! もうひとつ大事なのが、扱う通信の種類なんだ。Global Accelerator のリスナーは TCP と UDP をサポートしている。HTTP に限らないから、オンラインゲームや VoIP、IoT のような通信にも使えるんだよ。


比較表で整理する



違いが見えてきたでござる。並べて見られると覚えやすいのでござるが……。
まとめるとこんな感じだよ。
| 観点 | Amazon CloudFront | AWS Global Accelerator |
|---|---|---|
| ひとことで | CDN(コンテンツ配信ネットワーク) | ネットワーク層でトラフィックを最適な経路に乗せるサービス |
| エッジでのキャッシュ | する(エッジにコンテンツを保持して返す) | しない(毎回エンドポイントまで届ける) |
| 対象のプロトコル | HTTP / HTTPS | TCP / UDP |
| 入口 | ディストリビューションのドメイン名(例 d111111abcdef8.cloudfront.net) | 2 つの静的エニーキャスト IP(デュアルスタックは IPv4・IPv6 各 2 つ) |
| 届け先 | オリジン(S3 バケット、ウェブサーバーなど) | エンドポイント(ALB / NLB / EC2 / Elastic IP) |
| フェイルオーバー | オリジングループで、プライマリが失敗したらセカンダリのオリジンへ切り替え | ヘルスチェックで異常を検知すると、正常なエンドポイントへ即座に切り替え |
| 典型的なユースケース | 静的コンテンツ配信、動画のオンデマンド配信・ライブ配信 | オンラインゲーム、VoIP、IoT、固定 IP を許可リストに登録したい API、マルチリージョンの DR |



「入口」の行が気になるでござる。CloudFront には固定の IP はないのでござるか?
よく見てるね! CloudFront は普段、ドメイン名で使うサービスなんだ。実は CloudFront にも、許可リストなどの用途向けにエニーキャスト静的 IP をリクエストする仕組みはあるんだけど、申請してサポートの確認を受ける別の手続きになる。「アプリケーションの入口を固定 IP にしたい」と聞いたら、まず思い浮かべるのは Global Accelerator だね。



「エッジロケーションを使う」だけで飛びつくと取り違えるでござる。キャッシュするか、HTTP か TCP / UDP か、固定 IP が要るか、の 3 つで見分けるでござるぞ。
フェイルオーバーの違い



比較表のフェイルオーバーの行も、仕組みが違うようでござるな。
そうなんだ。CloudFront の場合は オリジングループ を作って、プライマリとセカンダリの 2 つのオリジンを登録する。プライマリがつながらなかったり、あらかじめ決めた HTTP ステータスコード(500、502、503、504 など)を返したりすると、セカンダリに切り替わるんだ。ただし切り替わるのは、ビューワーのリクエストが GET・HEAD・OPTIONS のときだけだよ。



では POST で注文を送るような通信は、切り替わらないのでござるか?
その通り。CloudFront のオリジンフェイルオーバーは、読み取り系のリクエスト向けの仕組みなんだ。一方の Global Accelerator は、エンドポイントの正常性を自動でチェックしていて、異常を見つけると即座に別の正常なエンドポイントへトラフィックを振り向ける。ユーザーが向ける IP アドレスは変わらないまま、裏の行き先だけが切り替わるんだよ。



入口の看板は同じまま、中の道だけが別の猿山に付け替わるのでござるな。里の猿たちは何も気づかずに済むのでござる。
Route 53 との組み合わせ



Route 53 にも「レイテンシー」や「フェイルオーバー」のルーティングがあったでござる。CloudFront や Global Accelerator とは何が違うのでござるか?
Route 53 は DNS サービスだから、名前解決の段階で行き先を選ぶ んだ。ルーティングポリシーのうち、この記事に関係が深いのは次の 2 つだね。
| ルーティングポリシー | 使いどころ |
|---|---|
| レイテンシールーティング | 複数の AWS リージョンにリソースがあり、レイテンシーが最も小さいリージョンへ振り分けたい |
| フェイルオーバールーティング | アクティブ / パッシブのフェイルオーバーを構成したい |



Global Accelerator も近いリージョンに振り分けて、異常なら切り替えるでござる。役割がかぶっていないのでござるか?
似ているけど、効く場所が違うんだ。Route 53 は「どの IP を答えるか」を決めるだけで、そのあとの通信はふつうのインターネットを通る。Global Accelerator は通信そのものの入口になって、AWS のネットワークで運ぶ。だから組み合わせて使うことも多いよ。たとえば Route 53 で独自ドメインを CloudFront のディストリビューションに向けたり、Global Accelerator の固定 IP を DNS レコードに登録したりする形だね。



道案内の立て札が Route 53、実際に荷を運ぶ近道や出張倉庫が Global Accelerator と CloudFront、という分担でござるな!


似ているもの ── S3 Transfer Acceleration



名前に「Acceleration」が付くものがもうひとつあったでござる。S3 Transfer Acceleration でござる。
S3 Transfer Acceleration は、S3 バケットへの転送 を速くする機能なんだ。CloudFront のエッジロケーションでデータを受けて、そこから最適化されたネットワーク経路で S3 に届ける。世界中から 1 つのバケットにアップロードを集めたいときや、大陸をまたいで大きなデータを定期的に送るときに向いているよ。使うときは bucket-name.s3-accelerate.amazonaws.com という専用のエンドポイントにアクセスするんだ。



S3 へのアップロードを速くしたいなら Transfer Acceleration、S3 のコンテンツを世界に配りたいなら CloudFront、と向きで分けて覚えるでござる。
—
実践
課金が発生しない範囲で、CloudFront のディストリビューション作成画面と Global Accelerator のアクセラレーター作成画面を開き、技術解説で比べた違い(オリジンを指定するか、プロトコルとポートを指定するか)が設定項目にどう表れているかを見比べます。この実践ではリソースを作成しません。 どちらも最後の作成ボタンを押す手前で画面を離れます。
前提条件
- AWS マネジメントコンソールにログイン済みであること(CloudFront と Global Accelerator のコンソールを閲覧できる権限)
- 作成するリソースはありません。CloudFront の「ディストリビューションを作成」、Global Accelerator の「アクセラレータを作成」の最後のボタンは押さないでください
- Global Accelerator は作成すると、有効・無効にかかわらず削除するまで時間単位の固定料金がかかります。この実践では作成しません
手順 1: CloudFront の作成画面を確認する
AWS マネジメントコンソールにログインします。
上部の検索バーに CloudFront と入力し、表示された「CloudFront」を選択します。CloudFront はグローバルサービスのため、リージョンの選択はありません。
左側ナビゲーションの「ディストリビューション」を選択し、「ディストリビューションを作成」をクリックします。
作成画面は「Choose a plan」→「Get started」→「Specify origin」→「Enable security」→「Review and create」の 5 ステップで、項目名の多くは英語で表示されます。
「Choose a plan」では、月額の料金プラン(無料・Pro・ビジネス・プレミアム)と従量課金の選択肢を確認します。ここでは 無料 を選んで先へ進みます(最後に作成するまで料金はかかりません)。
「Get started」で「Distribution name」に csl-compare-cf と入力し、「Single website configuration」を選択して「Next」をクリックします。
「Specify origin」で、以下を確認します。
- 「Origin type」で、配信元(
Amazon S3・Elastic Load Balancer・API Gateway・Otherなど)を選ぶようになっていること - 選んだオリジンタイプに応じて、配信元のバケットやドメインを指定する欄(
Amazon S3なら「S3 origin」)が表示されること


CloudFront では「どこからコンテンツを取ってくるか(オリジン)」を指定し、エッジがそのコンテンツを配る、という構成が画面からも分かります。TCP や UDP といったプロトコルやポートを選ぶ欄はありません。
確認が済んだら、この先の「Review and create」で作成のボタンは押さずに、ブラウザでこのページを離れます。
手順 2: Global Accelerator の作成画面を確認する
上部の検索バーに Global Accelerator と入力し、表示された「Global Accelerator」を選択します。Global Accelerator もグローバルサービスのため、リージョンの選択はありません。
「アクセラレータを作成」をクリックします。作成画面は「名前を入力」→「リスナーを追加」→「エンドポイントグループを追加」→「エンドポイントを追加」の 4 ステップです。
「名前を入力」で、以下を入力・確認します。
- アクセラレータ名:
csl-compare-ga - アクセラレータのタイプ:
標準(カスタムルーティングも選べることを確認します) - IP アドレスタイプ:
IPv4(デュアルスタックも選べることを確認します)


「次へ」をクリックします。この時点ではアクセラレーターは作成されません。
「リスナーを追加」で、以下の項目が並んでいることを確認します。
- ポート
- プロトコル(
UDPとTCPから選ぶ) - クライアントアフィニティ(
なし/ソース IP)


Global Accelerator では、オリジンではなく「どのポート・どのプロトコルの通信を受けるか(リスナー)」を最初に決めます。CloudFront の画面との違いが、HTTP / HTTPS のコンテンツ配信と、TCP / UDP の通信の入口という違いに対応しています。この先には「エンドポイントグループを追加」(リージョン・トラフィックダイヤル・ヘルスチェック)と「エンドポイントを追加」が続きます。
確認が済んだら、最後の作成ボタンは押さずに、ブラウザでこのページを離れます。



Global Accelerator は作った瞬間から、無効にしていても時間ごとに弊猿のバナナが減っていくでござる。画面を眺めるだけにして、最後のボタンは押さぬよう気をつけるでござるぞ。



試験では「キャッシュが効くか」「HTTP か TCP / UDP か」「固定 IP が要るか」の手がかりから、CloudFront と Global Accelerator を選び分ける観点が問われやすいでござる。DNS で振り分ける Route 53 や、S3 へのアップロードを速くする Transfer Acceleration との取り違えにも気をつけるでござる。
—
まとめ
| 要件の手がかり | 選ぶサービス |
|---|---|
| 画像・動画・静的ファイルなどのウェブコンテンツをエッジにキャッシュして配りたい | Amazon CloudFront |
| TCP / UDP の通信(ゲーム、VoIP、IoT など)を速く安定して届けたい | AWS Global Accelerator |
| アプリケーションの入口を固定 IP にして、許可リストに登録したい | AWS Global Accelerator |
| リージョンの障害時に、IP を変えずに別リージョンへ即座に切り替えたい | AWS Global Accelerator |
| DNS の段階で、レイテンシーの小さいリージョンや待機系へ振り分けたい | Amazon Route 53(レイテンシー / フェイルオーバールーティング) |
| 遠くのクライアントから S3 バケットへのアップロードを速くしたい | Amazon S3 Transfer Acceleration |
- CloudFront と Global Accelerator は、どちらもエッジロケーションを入口に使うが、CloudFront はキャッシュする CDN、Global Accelerator はキャッシュせずに AWS のグローバルネットワークで運ぶサービス
- 対象のプロトコルは、CloudFront が HTTP / HTTPS、Global Accelerator が TCP / UDP
- Global Accelerator は 2 つの静的エニーキャスト IP を入口にし、ヘルスチェックで異常を検知すると正常なエンドポイントへ即座に切り替える
- CloudFront のフェイルオーバーはオリジングループで行い、切り替わるのは
GET・HEAD・OPTIONSのリクエスト - Route 53 は名前解決で行き先を選ぶ DNS サービスで、CloudFront や Global Accelerator と組み合わせて使う
エッジロケーションやリージョンそのものについては AWS グローバルインフラストラクチャ:リージョン・AZ・エッジロケーション、CloudFront と S3 を組み合わせた安全な配信構成は CloudFront Origin Access Control(OAC)によるS3オリジン保護:OAIからの移行と推奨構成 で解説しています。
—
参照先
- Amazon CloudFront とは何ですか? – Amazon CloudFront
- CloudFront の使用方法 – Amazon CloudFront
- CloudFront オリジンフェイルオーバーを使用して高可用性を最適化する – Amazon CloudFront
- 許可リストで使用するエニーキャスト静的 IP をリクエストする – Amazon CloudFront
- CloudFront 標準ディストリビューションの開始方法 – Amazon CloudFront
- CloudFront 定額料金プラン – Amazon CloudFront
- AWS Global Accelerator とは – AWS Global Accelerator
- AWS Global Accelerator の働き – AWS Global Accelerator
- AWS Global Accelerator ユースケースについて – AWS Global Accelerator
- AWS Global Accelerator の標準アクセラレーターのリスナー – AWS Global Accelerator
- AWS Global Accelerator の料金 – AWS Global Accelerator
- 標準アクセラレーターの使用を開始する – AWS Global Accelerator
- ルーティングポリシーの選択 – Amazon Route 53
- Amazon S3 Transfer Acceleration を使用した高速かつ安全なファイル転送の設定 – Amazon Simple Storage Service











