メニュー
Amazon CloudFront
開発者ガイド (API Version 2016-09-29)

Amazon S3 での CloudFront の使用

コンテンツは Amazon S3 バケットに保存し、CloudFront を使用して配信できます。このトピックでは、S3 バケットで CloudFront を使用する方法と、S3 バケットを別のリージョンに移動した場合に CloudFront ディストリビューションを更新する方法について説明します。

CloudFront を追加して Amazon S3 からコンテンツを配信する

オブジェクトを Amazon S3 バケットに保存すると、ユーザーが S3 からオブジェクトを直接取得できるようにするか、CloudFront が S3 からオブジェクトを取得してユーザーに配信するように設定できます。

使用量が多ければ、Amazon S3 データ転送よりも CloudFront データ転送のほうが料金が安いので、ユーザーがオブジェクトに頻繁にアクセスする場合は、CloudFront を使用するほうがコストパフォーマンスが向上します。また、Amazon S3 だけからダウンロードするよりも、CloudFront を使用したほうが、ユーザーにより近い場所にオブジェクトが保存されているので、より速くダウンロードできます。

注記

CloudFront で Amazon S3 の Cross-Origin Resource Sharing 設定を尊重する場合は、Origin ヘッダーを Amazon S3 に転送するように CloudFront を設定します。詳細については、「リクエストヘッダーに基づいてオブジェクトをキャッシュするように CloudFront を設定する」を参照してください。

現在、Amazon S3 バケットのドメイン名 (MyAWSBucket.s3.amazonaws.com など) を使わずに、お客様自身のドメイン名 (example.com など) を使って Amazon S3 バケットから直接コンテンツを配信している場合は、以下の手順を行うことにより、支障なく CloudFront を追加できます。

Amazon S3 からコンテンツをすでに配信している場合に CloudFront を追加するには

  1. 該当するトピックで説明されている手順を使用して、CloudFront ディストリビューションを作成します。

    ディストリビューションを作成するときに、オリジンサーバーとして Amazon S3 バケットの名前を指定します。

    重要

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

    Amazon S3 で CNAME を使用している場合、ディストリビューションにもその CNAME を指定します。

  2. Amazon S3 バケット内にあるパブリックに読み出し可能なオブジェクトへのリンクを含むテストウェブページを作成して、リンクをテストします。この初期テストでは、オブジェクト URL にお客様のディストリビューションの CloudFront ドメイン名 (例: http://d111111abcdef8.cloudfront.net/images/image.jpg) を使用します。

    CloudFront URL の形式の詳細については、「CloudFront オブジェクトの URL の形式」を参照してください。

  3. Amazon S3 の CNAME を使用している場合、アプリケーションでは、バケットの名前 (例: myawsbucket.s3.amazonaws.com) を使用する代わりにお客様のドメイン名 (例: example.com) を使用して、Amazon S3 バケットのオブジェクトを参照しています。引き続き、ディストリビューションの CloudFront ドメイン名 (例: d111111abcdef8.cloudfront.net) を使用する代わりにお客様のドメイン名を使用してオブジェクトを参照する場合、DNS サービスプロバイダーを使用して設定を更新する必要があります。

    Amazon S3 の CNAME が機能するためには、DNS サービスプロバイダーに、現在ドメインに対するクエリを Amazon S3 バケットにルーティングしているドメインの CNAME リソースレコードセットが必要です。たとえば、ユーザーが次のオブジェクトをリクエストした場合、

    http://example.com/images/image.jpg

    このリクエストは自動的に再ルーティングされ、次のオブジェクトがユーザーに表示されます。

    http://myawsbucket.s3.amazonaws.com/images/image.jpg

    クエリを Amazon S3 バケットではなく CloudFront ディストリビューションにルーティングするには、DNS サービスプロバイダーから提供された方法を使用して、ドメインの CNAME リソースレコードセットを更新する必要があります。この更新された CNAME レコードによって、お客様のドメインからディストリビューションの CloudFront ドメイン名に、DNS クエリのリダイレクトが開始されます。詳細については、DNS サービスプロバイダーから提供されたドキュメントを参照してください。

    注記

    Amazon Route 53 を DNS サービスとして使用している場合は、CNAME リソースレコードセットまたはエイリアスリソースレコードセットを使用できます。リソースレコードセットの編集については、「リソースレコードセットの編集」を参照してください。エイリアスリソースレコードセットについては、「エイリアスおよび非エイリアスリソースレコードセットの選択」を参照してください。どちらのトピックも『Amazon Route 53 開発者ガイド』にあります。

    CloudFront での CNAME の使用の詳細については、「代替ドメイン名 (CNAME) を使用する」を参照してください。

    CNAME リソースレコードセットを更新してから変更が DNS システム全体に伝達されるまで最大で 72 時間かかりますが、通常は、それよりも早く終了します。この間、コンテンツに対する一部の要求は引き続き Amazon S3 バケットにルーティングされ、それ以外の要求は CloudFront にルーティングされます。

Amazon S3 バケットを別のリージョンに移動する

CloudFront ディストリビューションのオリジンとして Amazon S3 を使用していて、バケットを別のリージョンに移動する場合、以下の両方に該当するときは、CloudFront でレコードを更新してリージョンの変更を反映するまでに最大 1 時間かかることがあります。

  • CloudFront オリジンアクセスアイデンティティ (OAI) を使用してバケットへのアクセスを制限している

  • バケットの移動先の Amazon S3 リージョンで認証に署名バージョン 4 が要求される

OAI を使用している場合、CloudFront はリージョン (数ある値の中で) を使用して、バケットのオブジェクトをリクエストするために使用する署名を計算します。OAI の詳細については、「オリジンアクセスアイデンティティを使用して Amazon S3 コンテンツへのアクセスを制限する」を参照してください。Amazon S3 リージョンと各リージョンでサポートする署名バージョンのリストについてはアマゾン ウェブ サービス全般のリファレンスの「リージョンとエンドポイント」章で「Amazon Simple Storage Service (Amazon S3)」を参照してください。

CloudFront レコードの更新を高速化させるには、CloudFront コンソールの [General] タブの [Comment] フィールドを更新するなどして、CloudFront ディストリビューションを更新できます。ディストリビューションを更新すると、CloudFront はバケットがあるリージョンを即座に確認します。すべてのエッジロケーションに変更が反映されるまでに 15 分近くかかる場合があります。