

# Amazon CloudFront によるウェブサイトの高速化
<a name="website-hosting-cloudfront-walkthrough"></a>

[Amazon CloudFront](https://aws.amazon.com/cloudfront) を使用すると、Amazon S3 ウェブサイトのパフォーマンスを高めることができます。CloudFront を使用すると、世界中のデータセンター (*エッジロケーション* と呼ばれる) からお客様のウェブサイトのファイル (HTML、画像、動画など) を使用できるようになります。閲覧者がウェブサイトからファイルをリクエストすると、CloudFront は自動的に最も近いエッジロケーションのファイルのコピーにリクエストをリダイレクトします。これにより、遠い場所にあるデータセンターからコンテンツをリクエストした場合よりもダウンロード時間が高速になります。

CloudFront は、指定した期間にわたってコンテンツをエッジロケーションにキャッシュします。閲覧者が有効期限より長くキャッシュされていたコンテンツをリクエストすると、CloudFront はオリジンサーバーをチェックしてより新しいバージョンのコンテンツがあるかどうかを確認します。新しいバージョンが利用可能である場合、CloudFront は新しいバージョンをエッジロケーションにコピーします。元のコンテンツへの変更は、閲覧者がコンテンツをリクエストすると、エッジロケーションにレプリケートされます。

**Route 53 なしで CloudFront を使用する**  
このページのチュートリアルでは Route 53 を使用して CloudFront 配信をポイントしています。ただし、Route 53 を使用せずに CloudFront を使用して Amazon S3 バケットでホストされているコンテンツを配信する場合は、「[Amazon CloudFront チュートリアル: Amazon S3 用の動的コンテンツ配信のセットアップ](https://aws.amazon.com/cloudfront/getting-started/S3/)」を参照してください。CloudFront を使用して Amazon S3 バケットでホストされているコンテンツを配信する場合は、任意のバケット名を使用できます。また、HTTP と HTTPS の両方がサポートされます。

**CloudFormation テンプレートを使用した設定の自動化**  
ウェブサイトへの配信を行う CloudFront ディストリビューションを作成する安全な静的ウェブサイトを、CloudFormation テンプレートを使用して設定する方法の詳細については、*Amazon CloudFront デベロッパーガイド*の「[安全な静的ウェブサイトの開始方法](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/getting-started-secure-static-website-cloudformation-template.html)」を参照してください。

**Topics**
+ [ステップ 1: CloudFront ディストリビューションを作成する](#create-distribution)
+ [ステップ 2: ドメインとサブドメインのレコードセットを更新する](#update-record-sets)
+ [(オプション) ステップ 3: ログファイルを確認する](#check-log-files)

## ステップ 1: CloudFront ディストリビューションを作成する
<a name="create-distribution"></a>

まず、CloudFront ディストリビューションを作成します。これにより、ウェブサイトは世界中のデータセンターから利用できるようになります。

**Amazon S3 オリジンを使用してディストリビューションを作成するには**

1.  で CloudFront コンソールを開きます[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)

1. [**Create Distribution**] を選択します。

1. [**ディストリビューションの作成**] ページで、[**オリジンの設定**] セクションの [**オリジンドメイン名**] に、バケットの Amazon S3 ウェブサイトエンドポイントを入力します (例: **example.com.s3-website.us-west-1.amazonaws.com**)。

   CloudFront により自動的に [**Origin ID (オリジン ID)**] が入力されます。

1. [**Default Cache Behavior Settings (キャッシュ動作のデフォルト設定)**] の値はデフォルトのままにしておきます。

   [**ビューワープロトコルポリシー**] のデフォルト設定では、静的ウェブサイトに HTTPS を使用できます。これらの設定オプションの詳細については、*Amazon CloudFront デベロッパーガイド*の「[ウェブディストリビューションを作成または更新する場合に指定する値](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/WorkingWithDownloadDistributions.html#DownloadDistValuesYouSpecify)」を参照してください。

1. [**Distribution Settings (ディストリビューションの設定)**] で、以下の作業を行います。

   1. [**Price Class (価格クラス)**] は [**Use All Edge Locations (Best Performance) (すべてのエッジロケーションを使用する (最適なパフォーマンス))**] に設定されたままにしておきます。

   1. [**代替ドメイン名 (CNAME)**] をルートドメインと `www` サブドメインに設定します。このチュートリアルでは、`example.com` と `www.example.com` です。
**重要**  
このステップを実行する前に、[代替ドメイン名を使用するための要件](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html#alternate-domain-names-requirements)、特に有効な SSL/TLS 証明書の必要性について確認します。

   1. [**SSL 証明書**] で、[**Custom SSL Certificate (example.com) (独自 SSL 証明書 (example.com))**] を選択し、ドメイン名とサブドメイン名を対象とするカスタム証明書を選択します。

      詳細については、*Amazon CloudFront デベロッパーガイド*の「[SSL 証明書](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesSSLCertificate)」を参照してください。

   1. [**Default Root Object (デフォルトのルートオブジェクト)**] に、インデックスドキュメントの名前を入力します (例: `index.html`)。

      ディストリビューションにアクセスするために使用される URL にファイル名が含まれていない場合、CloudFront ディストリビューションはインデックスドキュメントを返します。[**Default Root Object (デフォルトのルートオブジェクト)**] は、静的ウェブサイトのインデックスドキュメントの名前と正確に一致する必要があります。詳細については、「[インデックスドキュメントの設定](IndexDocumentSupport.md)」を参照してください。

   1. [**ログ記録**] を [**On (オン)**] に設定します。
**重要**  
ディストリビューションを作成または更新して CloudFront のログを有効にすると、CloudFront はバケットのアクセスコントロールリスト (ACL) を更新して、バケットにログを書き込む `awslogsdelivery` アクセス許可を `FULL_CONTROL` アカウントに付与します。詳細については、**「Amazon CloudFront デベロッパーガイド」の「[標準ログ記録の設定とログファイルへのアクセスに必要なアクセス許可](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html#AccessLogsBucketAndFileOwnership)」を参照してください。ログを保存するバケットが S3 オブジェクト所有権のバケット所有者の強制設定を使用して ACL を無効にすると、CloudFront はバケットにログを書き込むことができません。詳細については、「[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md)」を参照してください。

   1. [**Bucket for Logs (ログ用のバケット)**] で、作成したログ記録バケットを選択します。

      ログ記録バケットの設定の詳細については、「[(オプション) ウェブトラフィックのログ記録](LoggingWebsiteTraffic.md)」を参照してください。

   1. CloudFront ディストリビューションへのトラフィックによって生成されたログをフォルダに保存する場合は、[**Log Prefix (ログのプレフィックス)**] にフォルダ名を入力します。

   1. 他の設定はすべてデフォルト値のままにしておきます。

1. [**Create Distribution**] を選択します。

1. ディストリビューションのステータスを表示するには、コンソールでディストリビューションを見つけて、[**ステータス**] 列を確認します。

   [`InProgress`] のステータスは、ディストリビューションがまだ完全にデプロイされていないことを示します。

   ディストリビューションがデプロイされたら、新しい CloudFront ドメイン名でコンテンツを参照できます。

1. CloudFront コンソールに表示される [**Domain Name (ドメイン名)**] の値を書き留めます (例: `dj4p1rv6mvubz.cloudfront.net`)。

1. CloudFront ディストリビューションが正常に動作していることを確認するには、ウェブブラウザでディストリビューションのドメイン名を入力します。

   ウェブサイトが表示されている場合、CloudFront ディストリビューションは機能します。ウェブサイトに Amazon Route 53 で登録されたカスタムドメインがある場合は、次のステップでレコードセットを更新するために CloudFront ドメイン名が必要になります。

## ステップ 2: ドメインとサブドメインのレコードセットを更新する
<a name="update-record-sets"></a>

CloudFront ディストリビューションが正常に作成されたので、Route 53 でエイリアスレコードを更新して、新しい CloudFront ディストリビューションを指すようにします。

**CloudFront ディストリビューションを指すようにエイリアスレコードを更新するには**

1. Route 53 コンソール ([https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/)) を開きます。

1. 左のナビゲーションで、[**Hosted zones**] (ホストゾーン) を選択します。

1. [**Hosted Zones**] (ホストゾーン) ページで、サブドメイン用に作成したホストゾーンを選択します (例: `www.example.com`)。

1. [**Records**] (レコード) で、サブドメイン用に作成した *A* レコードを選択します。

1. [**Record details**] (レコードの詳細) で、[**Edit record**] (レコードを編集) を選択します。

1. [**Route traffic to**] (トラフィックのルーティング先) で、[**Alias to CloudFront distribution**] (CloudFront ディストリビューションへのエイリアス) を選択します。

1. [**Choose distribution**] (ディストリビューションを選択) で、CloudFront ディストリビューションを選択します。

1. [**Save**] を選択します。

1. ルートドメインの *A* レコードを CloudFront ディストリビューションにリダイレクトするには、ルートドメイン用のこの手順を繰り返します (例: `example.com`)。

   レコードセットの更新は、2～48 時間以内に有効になります。

1. 新しい *A* レコードが有効かどうかを確認するには、ウェブブラウザで、サブドメイン URL を入力します (例: `http://www.example.com`)。

   ブラウザがルートドメイン (例: `http://example.com`) にリダイレクトしなくなった場合、新しい A レコードが有効になっています。新しい *A* レコードが有効になると、新しい *A* レコードによって CloudFront ディストリビューションにルーティングされるトラフィックが、ルートドメインにリダイレクトされなくなります。`http://example.com` または`http://www.example.com` を使用してサイトを参照する閲覧者は、最も近い CloudFront エッジロケーションにリダイレクトされるため、ダウンロード時間が短縮されます。
**ヒント**  
ブラウザはリダイレクト設定をキャッシュできます。新しい *A* レコードの設定が有効になったと考えられるにもかかわらず、ブラウザによって`http://www.example.com` がまだ `http://example.com` にリダイレクトされる場合は、ブラウザアプリケーションを閉じてから再び開いてブラウザの履歴とキャッシュをクリアするか、異なるウェブブラウザを使用してみてください。

## (オプション) ステップ 3: ログファイルを確認する
<a name="check-log-files"></a>

アクセスログにより、ウェブサイトを訪れたユーザーの数がわかります。また、[Amazon EMR](https://docs.aws.amazon.com/emr/latest/DeveloperGuide/) など他のサービスで分析できる貴重なビジネスデータも含まれています。

CloudFront ログは、CloudFront ディストリビューションを作成してログを有効にするときに選択したバケットとフォルダに保存されます。CloudFront は、対応するリクエストが行われると、24 時間以内にログバケットにログを書き込みます。

**ウェブサイトのログファイルを表示するには**

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) で Amazon S3 コンソールを開きます。

1. ウェブサイトのログ記録バケットを選択します。

1. CloudFront ログフォルダを選択します。

1. CloudFront によって書き込まれた `.gzip` ファイルを開く前に、まずファイルをダウンロードします。

   学習のためだけにウェブサイトを作成した場合は、割り当てたリソースを削除して、課金を停止できます。これを行うには、「[サンプルリソースのクリーンアップ](getting-started-cleanup.md)」を参照してください。AWS リソースを削除すると、ウェブサイトは使用できなくなります。