導入
利用者に近い場所でリクエストを受け止め、賢く裁いてからバックエンドに届ける。この「エッジでの制御」を担う3つのサービスは、名前が似た役割に見えて実は担当領域が違います。SAPでは、この使い分けを問う問題が頻出します。
説明
flowchart LR
U["利用者"] --> CF["CloudFront<br/>静的コンテンツのキャッシュ配信"]
U --> GA["Global Accelerator<br/>最適経路への振り分け"]
CF --> APIGW["API Gateway<br/>APIの受付・認証・スロットリング"]
GA --> APIGW
APIGW --> BE["バックエンド<br/>(Lambda/ECS/EC2)"]
| サービス | 担当領域 | 得意なこと |
|---|---|---|
| API Gateway | APIの「入口」そのもの | 認証(IAM/Cognito/Lambda Authorizer)、スロットリング、リクエスト変換、Lambda統合 |
| CloudFront | コンテンツ配信のキャッシュ層 | 静的アセット・APIレスポンスのエッジキャッシュ、DDoS緩和、TLS終端 |
| AWS Global Accelerator | ネットワーク層の経路最適化 | AnycastIPで最寄りのAWSエッジへ誘導、TCP/UDP含む非HTTPプロトコルにも対応、高速フェイルオーバー |
3つとも「利用者に近いところで裁く」点は共通ですが、CloudFrontはキャッシュできるコンテンツの配信が主目的、Global Acceleratorはキャッシュできないリアルタイム通信の経路最適化が主目的という違いがあります。API Gatewayはそもそも配信網ではなく、APIリクエストの受付窓口(認証・流量制御・変換)です。
- 「静的コンテンツ+動的APIの両方を高速配信したい」→ CloudFront
- 「オンラインゲーム・VoIPなどTCP/UDPで低レイテンシーが必須」→ Global Accelerator
- 「APIキーごとにリクエスト数を制限したい」「Lambdaと統合したAPIを素早く公開したい」→ API Gateway
具体例
グローバル展開するサービスの3つのニーズを、3サービスに割り当てます。担当領域が違うので、実は併用されます。
- モバイルアプリのバックエンドAPIを、認証と流量制限つきで公開したい → API Gateway … 「無料プランは1秒10回まで」といったAPIキーごとのスロットリング、Cognito認証、Lambda統合が最初から備わる。
- 画像やJS/CSSなど静的アセットを世界中に高速配信したい → CloudFront … キャッシュ可能なコンテンツをエッジから配信。API Gatewayの前段に置いてAPIレスポンスをキャッシュすることも。
- オンライン対戦の低遅延通信(UDP)を最適経路で届けたい → Global Accelerator … キャッシュできない動的通信を、AnycastIPで最寄りのAWSエッジへ誘導。固定IPと高速フェイルオーバーも。
最大の判断軸は「キャッシュできるか」。動画・画像・静的サイトはCloudFront、キャッシュが効かないゲーム・VoIPはGlobal Accelerator、APIの受付窓口はAPI Gateway。「利用者の近くで裁く」点は共通でも、担当が違うと押さえます。
読んでみよう
「CloudFrontとGlobal Acceleratorのどちらを使うべきか」という設問は、キャッシュ可能かどうかが最大の判断軸です。動画配信・画像配信・静的サイトはCloudFront、リアルタイム性が命でキャッシュが効かないゲームサーバーやIP固定が必要な通信はGlobal Accelerator、と対応づけて覚えておきましょう。