Amazon CloudFront
開発者ガイド (API バージョン 2016-09-29)

CloudFront がコンテンツを配信する方法

初期セットアップを行った後、CloudFront は、ウェブサイトまたはアプリケーションと連携して動作し、コンテンツの配信を高速化します。このセクションでは、ビューワーがコンテンツをリクエストしたときに CloudFront がコンテンツを配信する方法について説明します。

CloudFront がコンテンツをユーザーに配信する方法

CloudFront でコンテンツ配信を設定すると、ユーザーがファイルをリクエストしたときに次の処理が行われます。

  1. ユーザーがウェブサイトまたはアプリケーションにアクセスして、イメージファイルや HTML ファイルなどの 1 つまたは複数のファイルをリクエストします。

  2. DNS は、リクエストを最良の方法でそのリクエストに対応できる CloudFront POP エッジロケーション (通常はレイテンシーの点から最寄りの CloudFront POP) にルーティングします。

  3. その POP で、CloudFront はリクエストされたファイルがキャッシュにあるかどうかをチェックします。ファイルがキャッシュにある場合、CloudFront はそのファイルをユーザーに返します。ファイルがキャッシュにない場合は、次のように処理します。

    1. CloudFront は、リクエストを、ディストリビューションで指定されている内容と照合し、ファイルのリクエストを、対応するファイルタイプに応じてオリジンサーバーに転送します。たとえば、イメージファイルであれば Amazon S3 バケットに、HTML ファイルであれば HTTP サーバーに転送します。

    2. そのオリジンサーバーが、エッジロケーションにファイルを返します。

    3. オリジンサーバーから最初のバイトが到着した直後に、CloudFront はそのファイルをユーザーに転送し始めます。また、CloudFront は、そのファイルに対する次回のリクエストに備えて、そのファイルをエッジロケーションのキャッシュに追加します。

 
					CloudFront の支払い

CloudFront とリージョン別エッジキャッシュとの連携

CloudFront ポイントオブプレゼンス (POP) エッジロケーションを使用することで、人気のあるコンテンツをすばやくビューワーに供給できます。CloudFront にはリージョン別エッジキャッシュもあり、コンテンツが POP に残るだけの人気が十分にない場合でも、より多くのコンテンツをビューワーの近くに配置して、そのコンテンツのパフォーマンスを向上させます。

リージョン別エッジキャッシュは、すべてのタイプのコンテンツ (特に、時間の経過とともに人気が落ちる傾向にあるコンテンツ) に役立ちます。この例には、ビデオ、写真、アートワークようなユーザーが生成したコンテンツ、製品の写真やビデオのような e コマースアセット、突然新たに人気が出る可能性があるニュースやイベント関連のコンテンツがあります。

リージョン別キャッシュの動作

リージョン別エッジキャッシュは、ビューワーに近接して世界各地にデプロイされる CloudFront ロケーションです。オリジンサーバーと、ビューワーに直接コンテンツを提供するPOP (世界各地のエッジロケーション) の間にあります。オブジェクトの人気が下がると、個別の POP では、これらのオブジェクトを削除し、より人気の高いコンテンツ用に容量を確保する場合があります。リージョン別エッジキャッシュのキャッシュは個別の POP よりも大きいため、オブジェクトは最も近いリージョン別エッジキャッシュロケーションでより長くキャッシュに残ります。これにより、より多くのコンテンツがビューワーの近くに保持されるため、CloudFront がオリジンサーバーに戻る必要がなくなり、ビューワーに対する全般的なパフォーマンスが向上します。

ビューワーがウェブサイトで、またはアプリケーション経由でリクエストを実行すると、DNS はユーザーのリクエストに対応できる最適な POP にリクエストをルーティングします。通常、この場所は、レイテンシーに関して最も近い CloudFront エッジロケーションです。その POP で、CloudFront はリクエストされたファイルがキャッシュにあるかどうかをチェックします。ファイルがキャッシュにある場合、CloudFront はそのファイルをユーザーに返します。ファイルが POP にない場合、エッジサーバーは最も近くのリージョン別エッジキャッシュに接続してオブジェクトをフェッチします。

そのリージョン別エッジロケーションで、CloudFront は要求されたファイルがキャッシュにあるかどうかをもう一度チェックします。ファイルがキャッシュにある場合、CloudFront は要求元の POP にファイルを転送します。リージョン別エッジキャッシュロケーションから最初のバイトが到着した直後に、CloudFront はそのファイルをユーザーに転送し始めます。また、CloudFront は、そのファイルに対する次回のリクエストに備えて、POP のキャッシュにそのファイルを追加します。

POP とリージョン別エッジキャッシュロケーションのいずれかでキャッシュされていないファイルについて、CloudFront はディストリビューションの仕様とリクエストを比較し、ファイルのリクエストをオリジンサーバーに転送します。オリジンサーバーがファイルをリージョン別エッジキャッシュロケーションに送信すると、POP に転送され、CloudFront はファイルをユーザーに転送します。この場合、CloudFront は次回にビューワーがファイルを要求したときに、POP に加えてリージョン別エッジキャッシュロケーションのキャッシュにファイルを追加します。これにより、リージョン内のすべての POP でローカルキャッシュが共有されて、オリジンサーバーに対して複数のリクエストが行われなくなります。また、CloudFront はオリジンサーバーとの永続的接続を保持しているため、可能な限り迅速にオリジンからファイルが取得されます。

注記

  • リージョン別エッジキャッシュには、POP と同等の機能があります。たとえば、キャッシュ無効化リクエストでは、有効期限が切れる前に、POP とリージョン別エッジキャッシュの両方からオブジェクトが削除されます。エンドユーザーが次にオブジェクトを要求したときに、CloudFront はオリジンに戻ってオブジェクトの最新バージョンをフェッチします。

  • プロキシメソッド PUT/POST/PATCH/OPTIONS/DELETE は POP からオリジンに直接送信され、リージョン別エッジキャッシュをプロキシ経由しません。

  • リクエスト時に決定される動的コンテンツ (すべてのヘッダーを転送するように設定されたキャッシュ動作) は、リージョン別エッジキャッシュを介して送信されず、直接オリジンに送信されます。