みなさん、こんにちは。

今回は、CloudFront を利用する場合の主なユースケース、コンテンツ配信方法、キャッシュの仕組み、および料金について、簡単に説明してきます。

  1. CloudFront とは
  2. 主なユースケース
  3. コンテンツ配信の設定方法
  4. 主なキャッシュの仕組み
  5. 料金について

■ 1. CloudFront とは

CloudFront とは、静的および動的なウェブコンテンツの配信速度を高速化させることができるサービスです。

CloudFront は “エッジロケーション” と呼ばれる世界中のネットワークを経由して、ウェブコンテンツを配信します。
CloudFront でサービスを提供しているコンテンツをユーザーがリクエストすると、リクエストは “エッジロケーション” にルーティングされ、レイテンシー(ファイルの最初のバイトがロードされるまでの時間)を最小限にすることが可能です。

コンテンツをリクエストした際に、そのコンテンツがエッジロケーションに最も低いレイテンシーですでに存在している場合、CloudFront はそのエッジロケーションから、すでに存在しているコンテンツを配信することで、低いレイテンシーで、ユーザーにコンテンツを配信することが出来ます。

コンテンツがこのエッジロケーションに存在しない場合は、コンテンツの最新バージョンをオリジン(S3 バケットまたは HTTP サーバーなど) からコンテンツを取り込みます。

■ 2. 主なユースケース

[静的ウェブサイトのコンテンツ配信]

CloudFront を使用することで、エッジロケーションの利点を活用し、静的ウェブサイトのコンテンツ (画像、CSS, JavaScript など) 配信を高速化します。
S3 バケットに静的コンテンツを簡単に格納することができるため、S3 からコンテンツを配信することができます。

[ビデオの配信]

CloudFront を使用することで、”録画済みの動画ファイル” および “ライブイベントの動画” をストリーム配信するためのいくつかのオプションが提供されています。
オンデマンドビデオ (VOD) ストリーミングでは、あらゆる動画ファイルの形式 (MPEG DASH、Apple HLS、Microsoft Smooth Streaming、CMAF など) で、さまざまなデバイスにビデオストリーミング配信が可能です。

■ 3. コンテンツ配信の設定方法

“CloudFront ディストリビューション” を作成することで、コンテンツ配信する場所、およびコンテンツ配信の追跡など、詳細な設定を CloudFront に対して指示することが可能です。これによりユーザーがコンテンツを表示する際に、CloudFront はビューワーに近いエッジサーバーからコンテンツを早く配信することができます。

https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/Introduction.html より引用

CloudFront でコンテンツ配信する方法

1) オリジンサーバー (S3 バケットまたは HTTP サーバーなど) を指定します。そして、オリジンサーバーから CloudFront がオブジェクトを取得し、エッジロケーションから全世界に配信します。その際に、オリジンサーバーには、お客様のオブジェクトの最終バージョンが保存されます。
オリジンサーバーである HTTP サーバーは、EC2 インスタンス、またはお客様が管理するサーバー (カスタムオリジン) を利用できます。

2) オブジェクトをオリジンサーバーにアップロードします。オブジェクトは、HTTP 経由で提供できるものであれば何でもかまいません。通常では、ウェブページ、画像、メディアファイルがオブジェクトになりえます。

S3 バケットをオリジンサーバーとして使用している場合は、バケット内のオブジェクトを “読み取り可能にして公開する” ことで、オブジェクトの CloudFront URL を知っているユーザーなら、誰でもそのオブジェクトにアクセスできます。一方で、オブジェクトを非公開にして “署名付き URL” または “署名付き Cookie” を使用することで、オブジェクトにアクセスするユーザーを制限することもできます。

3) CloudFront ディストリビューションを作成します。このディストリビューションの設定により、ユーザーがウェブサイトまたはアプリケーションを通じてファイルをリクエストしたときに、どのオリジンサーバーからオブジェクトを取得するかが CloudFront によって指示されます。

4) 新しいディストリビューションにドメイン名を割り当てます。

5) CloudFront はディストリビューションの構成を、関係するすべてのエッジロケーションまたはポイントオブプレゼンス (POP) (CloudFront がファイルのコピーをキャッシュするために使用する、地理的に分散して配置されたデータセンター内のサーバー群) に送信します。ただし、ディストリビューションのコンテンツは送信されません。

なお、CloudFront がディストリビューションのドメイン名として d111111XXXXXXX.cloudfront.net を返した場合は、S3 バケット内または HTTP サーバーのルートディレクトリに存在する top.jpg の URL は “http://d111111XXXXXXX.cloudfront.net/top.jpg” となります。

または、独自ドメイン名 (sunnycloud.jp など)をディストリビューションに使用するよう CloudFront に設定することも可能です。この場合の URL は “http://www.sunnycloud.jp/top.jpg” のように設定することも可能です。

■ 4. 主なキャッシュの仕組み

[エッジロケーションにおけるキャッシュのしくみ]

オリジンサーバーが直接応答するリクエストの数を減らすために、CloudFront キャッシュを使用します。CloudFront キャッシュは、ユーザーに近いエッジロケーションからオブジェクトを提供します。これにより、オリジンサーバーの負荷が軽減され、レイテンシーが減少します。

[キャッシュヒット率とは]

すべてのリクエスト数に対する、CloudFront キャッシュから直接オブジェクトを提供するリクエストの比率を “キャッシュヒット率” と呼びます。

[キャッシュヒット率の向上]

コンテンツのオリジンサーバーにアクセスするのではなく、CloudFront キャッシュから直接提供されるビューワーリクエストの比率を増やしてパフォーマンスを向上させることができます。キャッシュヒット率を向上させるには、オブジェクトに対して、”Cache-Control max-age” または “Cache-Control s-maxage” ディレクティブ を追加することで、max-age または s-maxage に対して最も長い実用的な値を指定するようにオリジンに設定することが可能です。

また、キャッシュ期間が短ければ短いほど、オブジェクトが更新されているかどうかを特定して、最新バージョンを取得するリクエストを CloudFront がオリジンサーバーに送信する頻度が高くなります。

■ 5. 料金について

CloudFront の使用状況レポートとして “請求レポート” および “使用状況を要約したレポート” の 2 種類が提供されています。

また、CloudFront の使用料は、下記の図における (1),(2),(3) の内訳になります。

https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/CloudFrontPricing.htmlより引用


1) オリジンサーバーに S3 を使用する場合は、S3 バケットのストレージに対する課金が発生します。S3 バケットにオブジェクトを保存するための通常の S3 ストレージ料金がかかります。この料金は、AWS ステートメントの S3 部分に表示されます。

2) エッジロケーションからのオブジェクトの供給に対する課金が発生します。 CloudFront がオブジェクトに対するリクエストに応答すると、CloudFront の料金が発生します。料金には、サーバーからクライアントへの WebSocket データのデータ転送が含まれます。この CloudFront 料金は、AWS ステートメントの CloudFront 部分に “region -DataTransfer-Out-Bytes” として表示されます。

3) オリジンサーバーへのデータ送信に対する課金が発生します。 ユーザーがデータをオリジンサーバーにオブジェクトを転送すると、CloudFront 料金が発生します。オブジェクト転送データには DELETE、OPTIONS、PATCH、POST、PUT リクエストが含まれます。料金には、クライアントからサーバーへの WebSocket データのデータ転送が含まれます。この CloudFront 料金は、AWS ステートメントの CloudFront 部分に “region -DataTransfer-Out-OBytes” として表示されます。

■ まとめ

いかがでしたでしょうか。
今回は CloudFront およびコンテンツ配信を高速化する流れなどについて、簡単に説明しました。
CloudFront は、コンテンツ配信をより高速にレスポンスする必要があるユースケースなど、AWS マネジメントサービスとして、非常に人気があります。
コンテンツ配信する際は、ぜひ、みなさんも CloudFront を使ってみましょう。

SunnyCloudでは、AWSがお得に利用できるAWSリセール(請求代行)サービスを提供しています!

AWSをご利用いただくには、直接契約するより断然お得。
AWS利用料が5%割引、さらに日本円の請求書による支払いが可能です!