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

Amazon CloudFront とは

Amazon CloudFront は、ユーザーへの静的および動的ウェブコンテンツ (.html、.css、.js、イメージファイルなど) の配信を高速化するウェブサービスであり、CloudFront ではエッジロケーションと呼ばれるデータセンターの世界規模のネットワークを通じてコンテンツが配信されます。CloudFront を使用して提供されているコンテンツをユーザーがリクエストすると、そのユーザーはエッジロケーションにルーティングされます。エッジロケーションでは最も低いレイテンシー (遅延時間) が提供されるので、コンテンツは可能な最高のパフォーマンスで配信されます。

  • コンテンツがエッジロケーション内に最も低いレイテンシーで既に存在している場合、CloudFront はそのコンテンツを即時に配信します。

  • コンテンツがそのエッジロケーションに存在しない場合、CloudFront は、コンテンツの最終バージョンのソースとしてお客様が特定した Amazon S3 バケット、MediaPackage チャネル、または HTTP サーバー (たとえば、ウェブサーバー) などの、お客様が定義したオリジンからコンテンツを取り込みます。

たとえば、イメージが CloudFront からではなく従来のウェブサーバーから供給されているとします。たとえば、sunsetphoto.png というイメージを、URL http://example.com/sunsetphoto.png を使用して提供するとします。

ユーザーは簡単にこの URL にアクセスしてそのイメージを表示できます。ただし、イメージが見つかるまでリクエストがネットワークから別のネットワークに (インターネットを構成する相互接続ネットワークの複雑な集合経由で) ルーティングされたということを、おそらくユーザーは認識しません。

CloudFront は、コンテンツを最良の方法で供給できるエッジロケーションに各ユーザーリクエストを AWS バックボーンネットワークを経由してルーティングすることによって、お客様のコンテンツの配信速度を向上させます。通常、これはビューワーに最も高速に配信できる CloudFront エッジサーバーです。AWS ネットワークを使用することでユーザーのリクエストが通過しなければならないネットワークの数が大幅に減少するので、パフォーマンスが向上します。ユーザーが経験するレイテンシー (ファイルの最初のバイトがロードされるまでの時間) が低くなり、データ転送速度が高くなります。

お客様のファイル (オブジェクトとしても知られる) のコピーが世界中の複数のエッジロケーションに保持される (つまりキャッシュされる) ので、信頼性と可用性の向上も得られます。

コンテンツを配信するように CloudFront を設定する方法

CloudFront ディストリビューションを作成して、コンテンツの配信元の場所と、コンテンツ配信の追跡と管理の方法の詳細を CloudFront に指示します。こうすることで、誰かがそのコンテンツを表示または使用する際に、CloudFront はビューワーに近いコンピュータ (エッジサーバー) を使用してそのコンテンツをすばやく配信します。

 
				CloudFront の仕組み

コンテンツを配信するように CloudFront を構成する方法

  1. Amazon S3 バケットや独自の HTTP サーバーなどのオリジンサーバーを指定します。CloudFront はそのオリジンサーバーからファイルを取得し、CloudFront エッジロケーションから全世界に配信します。

    オリジンサーバーには、お客様のオブジェクトのオリジナルの最終バージョンが保存されます。コンテンツを HTTP 経由で提供する場合、オリジンサーバーは Amazon S3 バケットまたは HTTP サーバー (ウェブサーバーなど) になります。HTTP サーバーは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、またはお客様が管理するサーバー (カスタムオリジンとも呼ばれる) で実行できます。

    Adobe Media Server RTMP プロトコルを使用してオンデマンドでメディアファイルを配信している場合、オリジンサーバーは必ず Amazon S3 バケットになります。

  2. ファイルをオリジンサーバーにアップロードします。通常、お客様のファイル (オブジェクトとも呼ぶ) にはウェブページ、イメージ、メディアファイルなどがありますが、HTTP またはサポートされているバージョンの Adobe RTMP (Adobe Flash Media Server で使用されるプロトコル) 経由で供給できるすべてのものをオブジェクトとして使用できます。

    Amazon S3 バケットをオリジンサーバーとして使用している場合は、バケット内のオブジェクトを読み取り可能にして公開することで、そのオブジェクトの CloudFront URL を知っているユーザーは誰でもそのオブジェクトにアクセスできます。オブジェクトを非公開にして、オブジェクトにアクセスするユーザーを制限することもできます。「署名付き URL と署名付き Cookie を使用してプライベートコンテンツを供給する」を参照してください。

  3. お客様は CloudFront ディストリビューションを作成します。このディストリビューションにより、ユーザーがウェブサイトまたはアプリケーションを通じてファイルをリクエストしたときに、どのオリジンサーバーからファイルを取得するかが CloudFront に指示されます。同時に、詳細も指定します。たとえば、CloudFront ですべてのリクエストをログに記録するかどうかや、ディストリビューションを作成した直後にディストリビューションを有効にするかどうかなどです。

  4. CloudFront は新しいディストリビューションにドメイン名を割り当てます。このドメイン名は、CloudFront コンソールで確認でき、プログラムによるリクエスト (API リクエストなど) ではレスポンスとして返されます。

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

ウェブサイトやアプリケーションを開発するときは、CloudFront がお客様の URL に対して提供するドメイン名を使用します。たとえば、CloudFront がディストリビューションのドメイン名として d111111abcdef8.cloudfront.net を返した場合、Amazon S3 バケット内 (または HTTP サーバーのルートディレクトリ内) の logo.jpg の URL は http://d111111abcdef8.cloudfront.net/logo.jpg になります。

または、独自のドメイン名を使用できるように、CloudFront ディストリビューションを構成することもできます。この場合、URL は http://www.example.com/logo.jpg のようになります。

オプションで、ファイルにヘッダーを追加するようにオリジンサーバーを構成し、ファイルが CloudFront エッジロケーションのキャッシュに保持される期間を示すこともできます。デフォルトでは、各オブジェクトはエッジロケーションに 24 時間保持された後に有効期限切れになります。最小の有効期限切れ時間は 0 秒です。有効期限切れ時間の上限はありません。詳細については、「コンテンツがエッジキャッシュに保持される期間の管理 (有効期限)」を参照してください。