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

Amazon S3 オリジンおよびカスタムオリジンを使用したウェブディストリビューション

ウェブディストリビューションを作成する場合、エッジロケーションに配信するファイルに対するリクエストを CloudFront がどの場所に送信するかを指定します。CloudFront は、オリジンとして Amazon S3 バケットおよび HTTP サーバー (ウェブサーバーなど)を使用することをサポートします。

オリジンとしての Amazon S3 バケットの使用

ディストリビューションのオリジンとして Amazon S3 を使用する場合、CloudFront が配信するすべてのオブジェクトを、Amazon S3 バケットに配置します。オブジェクトを Amazon S3 に格納するには、Amazon S3 でサポートされる任意の方法を使用できます (例: Amazon S3 コンソールや API、サードパーティツール)。他の Amazon S3 バケットと同様に、バケット内に階層を作成してオブジェクトを保存できます。

既存の Amazon S3 バケットを CloudFront オリジンサーバーとして使用してもバケットに変更は一切ありません。Amazon S3 オブジェクトの保存やアクセスで通常使用しているとおりに通常の Amazon S3 価格でバケットを使用できます。バケットへのオブジェクトの保存には、通常の Amazon S3 料金が発生します。CloudFront の使用料の詳細については、「CloudFront レポート」を参照してください。

重要

バケットが CloudFront で正常に機能するには、その名前が DNS 命名要件に沿ったものでなければなりません。詳細については、「Amazon Simple Storage Service 開発者ガイド」の「バケットの制約と制限」を参照してください。

CloudFront がオブジェクトの取得先としている Amazon S3 バケットをお客様が指定する場合、一般には次の形式を使用します。

bucket-name.s3.amazonaws.com

バケットが米国スタンダードリージョンにあり、Amazon S3 がバージニア北部の施設にリクエストをルーティングするように設定する場合は、次の形式を使用します。

bucket-name.s3-external-1.amazonaws.com

この形式でバケット名を指定した場合、以下の CloudFront 機能を使用することができます。

以下の形式を使用してバケットを指定しないでください。

  • Amazon S3 のパススタイル (s3.amazonaws.com/bucket-name)

  • Amazon S3 の CNAME (ある場合)

オリジンのウェブサイトエンドポイントとして構成された Amazon S3 バケットの使用

ウェブサイトエンドポイントとして設定されている Amazon S3 バケットを、CloudFront のカスタムオリジンとしてセットアップできます。

  • CloudFront ディストリビューションを設定するときに、オリジンにバケットのエンドポイントをホストしている Amazon S3 の静的ウェブサイトを入力します。この値は、Amazon S3 コンソールの [Static Website Hosting] の [Properties] ページに表示されます。以下に例を示します。

    http://bucket-name.s3-website-us-west-2.amazonaws.com

Amazon S3 静的ウェブサイトエンドポイントを指定する方法の詳細については、Amazon S3 ドキュメントの「ウェブサイトエンドポイント」を参照してください。

この形式でバケット名をオリジンとして指定すると、Amazon S3 リダイレクトと Amazon S3 カスタムエラードキュメントを使用できます。Amazon S3 の諸機能について詳しくは、「Amazon S3 ドキュメント」を参照してください。 (CloudFront でもカスタムエラーページが提供されています。詳細については、「エラーレスポンスのカスタマイズ」を参照してください。

Amazon S3 バケットを CloudFront オリジンサーバーとして使用しても変更されません。通常使用しているとおりに使用でき、通常の Amazon S3 料金が発生します。CloudFront の使用料の詳細については、「CloudFront レポート」を参照してください。

注記

CloudFrontAPI を使用して、ウェブサイトエンドポイントとして設定された Amazon S3 バケットを使用したディストリビューションを作成する場合、ウェブサイトが Amazon S3 バケットでホストされている場合でも、CustomOriginConfig を使用して設定する必要があります。CloudFront API を使用してディストリビューションを作成する方法の詳細については、Amazon CloudFront API リファレンスの「CreateDistribution」を参照してください。

Amazon EC2 または他のカスタムオリジンの使用

カスタムオリジンは、HTTP サーバーです (例: ウェブサーバー)。HTTP サーバーには、Amazon EC2 インスタンス、またはプライベートで管理する HTTP サーバーを使用できます。ウェブサイトエンドポイントとして設定された Amazon S3 オリジンは、カスタムオリジンと見なされます。

使用するカスタムオリジンが独自の HTTP サーバーである場合、サーバーの DNS 名に加えて、オリジンからオブジェクトを取得するときに CloudFront が使用する HTTP ポート、HTTPS ポート、およびプロトコルを指定します。

カスタムオリジンを使用する場合、以下の機能を除いて、ほとんどの CloudFront 機能がサポートされます。

  • RTMP ディストリビューション – サポートされません。

  • プライベートコンテンツ – 署名付き URL を使用してカスタムオリジンからコンテンツを配信できますが、CloudFront の場合、カスタムオリジンにアクセスするには、オリジンがパブリックにアクセス可能な状態になっている必要があります。詳細については、「CloudFront を使用してプライベートコンテンツを供給する」を参照してください。

Amazon EC2 インスタンスおよび他のカスタムオリジンを CloudFront とともに使用するには、次のガイドラインに従います。

  • 同じ CloudFront オリジンのコンテンツを提供するすべてのサーバーで同じコンテンツをホストし、提供します。詳細については、「ウェブディストリビューションを作成または更新する場合に指定する値」トピックの「オリジンの設定」を参照してください。

  • すべてのサーバーで X-Amz-Cf-Id ヘッダーエントリをログに記録します。CloudFront はデバッグのためにこの情報を必要とします。

  • カスタムオリジンがリッスンしている HTTP および HTTPS ポートへのアクセスリクエストを制限します。

  • 実装内のすべてのサーバーの時計を同期します。CloudFront では、署名付き URL と署名付き Cookie、アクセスログ、およびレポートで協定世界時 (UTC) を使用します。また、CloudWatch メトリクスを使用して CloudFront のアクティビティをモニタリングする場合、CloudWatch も UTC を使用することに注意してください。

  • 冗長サーバーを使用して障害に対処します。

  • カスタムオリジンを使用したプライベートコンテンツ供給の詳細については、「プライベートコンテンツ用の HTTP サーバーの使用」を参照してください。

  • リクエストとレスポンス動作、およびサポートされる HTTP ステータスコードについては、「リクエストとレスポンスの動作」を参照してください。

カスタムオリジンで Amazon Elastic Compute Cloud を使用する場合は、以下の点に従うことをお勧めします。

  1. ウェブサーバーのソフトウェアを自動的にインストールする Amazon マシンイメージを使用します。詳細については、Amazon EC2 に関するドキュメントを参照してください。

  2. Elastic Load Balancing ロードバランサーを使用して、複数の Amazon EC2 インスタンスにわたるトラフィックを処理するほかに、Amazon EC2 インスタンスの変更からアプリケーションを隔離します。たとえば、ロードバランサーを使用する場合、アプリケーションを変更せずに Amazon EC2 インスタンスの追加と削除ができます。詳細については、Elastic Load Balancing に関するドキュメントを参照してください。

  3. CloudFront ディストリビューションを作成する場合は、オリジンサーバーのドメイン名にロードバランサーの URL を指定します。詳細については、「ウェブディストリビューションの使用」を参照してください。