【AWS-SAA勉強記】第5回_Amazon CloudFront、Global Accelerator編

この記事は作者本人がAWS-SAAの学習を通じて、曖昧や覚えづらい部分をサービス単位でまとめたものです。
特に、概要だけではイメージがわきづらいので、できるだけユースケースを活用して理解しやすいようにしています。
教材はSHOEISHAの[AWS教科書 AWS認定ソリューションアーキテクトアソシエイト テキスト＆問題集](https://www.amazon.co.jp/AWS%E6%95%99%E7%A7%91%E6%9B%B8-AWS%E8%AA%8D%E5%AE%9A%E3%82%BD%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%88%E3%82%A2%E3%82%BD%E3%82%B7%E3%82%A8%E3%82%A4%E3%83%88-%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%EF%BC%86%E5%95%8F%E9%A1%8C%E9%9B%86-%E7%85%A4%E7%94%B0-%E5%BC%98%E6%B3%95/dp/4798183261/ref=sr_1_5?crid=3FF4OG65DFJ67&dib=eyJ2IjoiMSJ9.T249byXp1rsbDxkYXfxXb6fI4BUDNVOMSaquZL-1mVpPGu6oOTJAj19zZAYJR86Jon6ca0-q7sg_Ial5s1cea15f4gmNEJG8LyNQfNCbzfRWbdc3QShULjB2kryq34xDUkL-inBJMmFaiNYCb3lq0OcIRowzNObcgxFyIO96gEzEfcAYd2dxcSG6AHyl5e2DAQpdDy0xOEQZb_sRAX47vahzwyOMS8huPEScwArE3A0.zBHSxW-BjHBATnQ5vd4s6NikPxikuDNRnvEEGpF7d6A&dib_tag=se&keywords=aws+%E3%82%BD%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%88+%E3%82%A2%E3%82%BD%E3%82%B7%E3%82%A8%E3%82%A4%E3%83%88&qid=1724027719&s=books&sprefix=AWS%2Cstripbooks%2C195&sr=1-5)を参考にしています。

## Amazon CloudFront、Global Acceleratorに関する曖昧な部分
Amazon CloudFront、Global Acceleratorは、いずれもレイテンシを削減することができるAWSサービスです。
Amazon CloudFront、Global Acceleratorで、曖昧になりがちな部分は以下の通りです。（あくまでも私個人が曖昧であると感じた部分です）

* Amazon CloudFrontとGlobal Acceleratorの違い
* Amazon CloudFrontにおける署名付きURL/署名付きCookieとは？

本記事では、これらの内容について解説していきます。

## Amazon CloudFrontとGlobal Acceleratorの違い
### Amazon CloudFront
Amazon CloudFrontは、AWSが提供する**コンテンツデリバリネットワーク**サービス（CDN）です。
CloudFrontを利用することで、静的および動的なウェブコンテンツ（例：HTML、CSS、JavaScript、画像ファイルなど）を**高速かつ安全に配信**できます。

CloudFrontは、ウェブサイト、動画ストリーミング、API、ソフトウェア配信など、さまざまな用途で利用されています。

### Amazon Global Accelerator
Amazon Global Acceleratorは、AWSが提供する**ネットワークサービス**です。
主にアプリケーションの**パフォーマンスと可用性を向上**させるために使用されます。

なぜ可用性も向上されるかというと、**リソースにアクセスするための静的IPアドレスが提供されるため、リージョン障害時のフェイルオーバーにかかる時間を短くすることができる**ためです。

Global Acceleratorは、Application Load Balancer（ALB）、Network Load Balancer（NLB）、EC2インスタンスなどの前段に配置され、これらのコンポーネントのパフォーマンスを最適化します。

### Amazon CloudFrontとGlobal Acceleratorの違いとユースケース
CloudFront、Global Acceleratorともにパフォーマンスを向上（レイテンシ削減）できることが特徴です。
Global Acceleratorについては、可用性を高めることもできます。

まずは、両者の違いについて表で整理します。
|  | CloudFront | Global Accelerator |
| ---- | ---- | ---- |
| 概要 | CDNのサービス | アプリケーションの可用性とパフォーマンスを高めるネットワークサービス |
| AWSリージョン内のリソースへのアクセス経路 | エッジロケーション経由 | エッジロケーション経由 |
| サポートするプロトコル | HTTP、HTTPS、WebSocket | TCP、UDPを使用するすべてのプロトコル |
| エッジロケーションでのキャッシュ可否 | 可 | 不可 |
| 静的IPの払出し可否 | 不可 | 可 |

次に、具体的なユースケースについて考えてみます。
#### Amazon CloudFrontのユースケース
- **NetflixやYouTubeのような動画配信サービス**
    - 目的：高品質な動画を世界中のユーザーに低遅延で配信する。
    - 利点：エッジサーバーを利用して、ユーザーに最も近い場所から動画を配信するため、バッファリングを最小限に抑えます。
- **eコマースサイト（Amazon、楽天など）のようなWebサイトの高速化**
    - 目的：商品ページや画像、スクリプトを高速に配信し、ユーザー体験を向上させる。
    - 利点：静的コンテンツをキャッシュし、サーバー負荷を軽減します。

#### Amazon Global Acceleratorのユースケース
- **FortniteやLeague of Legendsなどのグローバルなオンラインゲーム**
    - 目的：ゲームサーバーへのアクセスを最適化し、低遅延で安定した接続を提供する。
    - 利点：AWSのグローバルネットワークを利用して、最適な経路でトラフィックをルーティングします。

- **株式取引アプリ（Robinhood、E*TRADEなど）といった金融取引プラットフォーム**
    - 目的：取引の遅延を最小限に抑え、リアルタイムでのデータアクセスを提供する。
    - 利点：低遅延で高可用性の接続を実現し、取引の信頼性を向上させます。


## Amazon CloudFrontにおける署名付きURL/署名付きCookieとは？
### 署名付きURL
署名付きURLは、**特定のファイルへのアクセスを制限**するために使用されます。
URL自体に署名が含まれており、その署名が有効な間だけアクセスが許可されます。
例えば、アプリケーションのインストールファイルなど、個別のファイルへのアクセスを制限したい場合に適しています。

### 署名付きCookie
署名付きCookieは、**複数のファイルや特定の条件下でのアクセスを制限するため**に使用されます。
現在のURLを変更せずに、特定のユーザーにのみアクセスを許可する場合に便利です。
例えば、購読者専用のコンテンツやHLS形式の動画など、複数の制限されたファイルへのアクセスを提供する場合に適しています。

### Amazon CloudFrontにおける署名付きURL、署名付きCookieのユースケース
署名付きURLの署名付きCookieのざっくりとした違いは対象のファイルが１つか複数かです。（かなりざっくりですが）
ここでは、Amazon CloudFrontにおいて署名付きURLを使用する場合のユースケースを説明します。

- **有料コンテンツの配信**
    - 例えば、オンラインコースやデジタル書籍などの有料コンテンツを販売している場合、購入者に対して一時的なアクセス権を付与するために署名付きURLを使用します。これにより、購入者だけがコンテンツにアクセスでき、期限が過ぎるとアクセスできなくなります。 
- **限定イベントのライブストリーミング**
    - 特定のイベント（例えば、ウェビナーやライブコンサート）のライブストリーミングを行う際に、参加者に対して一時的なアクセス権を付与するために署名付きURLを使用します。これにより、イベントの期間中だけアクセスを許可し、終了後はアクセスを制限できます。

- **プライベートファイルの共有**
    - 企業内で機密情報を共有する場合や、特定のプロジェクトメンバーに対して一時的にファイルを共有する場合に署名付きURLを使用します。これにより、特定の期間だけアクセスを許可し、セキュリティを保つことができます。

- **APIのセキュリティ強化**
    - APIを通じて特定のリソースにアクセスする際に、署名付きURLを使用してアクセス制御を行います。これにより、特定のユーザーやアプリケーションに対して一時的なアクセス権を付与し、不正アクセスを防止できます。

- **期間限定のプロモーション**
例えば、期間限定のプロモーションやキャンペーンを実施する際に、特定のコンテンツ（例えば、割引クーポンや特典動画）へのアクセスを署名付きURLで制限します。これにより、プロモーション期間中だけアクセスを許可し、終了後はアクセスを制限できます。

## まとめ
本記事では、以下についてまとめました。
* Amazon CloudFrontとGlobal Acceleratorの違い
* Amazon CloudFrontにおける署名付きURL/署名付きCookieとは？

次回は[【AWS-SAA勉強記】第6回_Amazon RDS編](https://qiita.com/sknp/items/f26e3a1b57a37cd27b1e)です。