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 秒です。有効期限切れ時間の上限はありません。詳細については、「コンテンツがエッジキャッシュに保持される期間の管理 (有効期限)」を参照してください。