Amazon CloudFront チュートリアル: Amazon S3 の動的コンテンツディストリビューションの設定

Amazon S3 の Amazon CloudFront ディストリビューションの設定方法

Amazon CloudFrontAmazon Simple Storage Service (Amazon S3) とシームレスに連携して、ウェブコンテンツの配信を高速化し、オリジンサーバーの負荷を軽減します。Amazon S3 は、データをクラウドに保存してウェブコンテンツとして配信したいユーザーに最適です。機能や動的コンテンツを配信したい場合は、「Amazon Elastic Compute Cloud (Amazon EC2) 用の Amazon CloudFront ディストリビューションの設定方法」を確認してください。

この AWS TechTips デモを見て、Amazon CloudFront CDN ディストリビューションを設定する方法を確認してください。

Amazon S3 で Amazon CloudFront ディストリビューションを設定する利点は何ですか?

Amazon CloudFront コンテンツ配信ネットワーク (CDN) ディストリビューションは S3 ユーザーにとって多くの利点があります。

高速データ転送

CloudFront では、世界中の視聴者にコンテンツを高速で提供できます。多くの CloudFront エッジロケーションは、コンテンツをユーザーの近くでキャッシュして配信することで、レイテンシーを削減し、オリジンサーバーの容量負荷を軽減します。

セキュリティとパフォーマンスの向上

CloudFront は S3 バケットへのアクセスも制限します。コンテンツへのアクセスを CloudFront エンドポイントのみに許可することで、アプリケーションの安全性と応答性が向上します。

費用対効果の高いデータ転送

CloudFront は、予算に合わせて配信をカスタマイズできる料金設定になっています。AWS は S3 と CloudFront などの AWS がホストするオリジン間のデータ転送に料金を請求しないため、オリジンのフェッチは費用対効果の高いオプションとなっています。

CloudFront と S3 で動的コンテンツのロードを加速する方法

ステップ 1.AWS コンソールに移動する

まず、AWS マネジメントコンソールにログインし、サービスリストから Amazon S3 を選択します。 

ステップ 2.Amazon S3 バケットを作成する

そこから、次のことができます。

  • S3 バケットをまだ作成していない場合は、[バケットを作成] を選択して作成します。
  • DNS 準拠のバケット名を指定します。
  • バケットを配置したいリージョンを選択します。

その後、バケットを作成できます。コンソールまたは S3 API を使用して、必要に応じてバケットにファイルを追加したり、新しいバケットを作成したりできます。S3 バケットを最初に作成する場合、DNS 名の変更が反映されるまでに時間がかかります。通常は最大 15 分です。

ステップ 3.CloudFront ディストリビューションを作成する

次に、AWS コンソールサービスリストの [ネットワーキングとコンテンツ配信] セクションから CloudFront に移動します。CloudFront を既に開いたことがある場合は、すばやくアクセスできるように履歴にも含まれている可能性があります。ここから、[ディストリビューションを作成] をクリックして新しいウェブディストリビューションを作成できます。  

ステップ 4.ディストリビューション設定を指定する

ここで、ディストリビューション設定の入力を開始できます。まず、「オリジンドメイン名」フィールドに作成した S3 ドメインを指定します。  

ステップ 5.オリジンを設定する

オリジンドメイン名を入力します。同じ AWS アカウントで S3 バケットを作成していた場合は、フィールド内のドロップダウンリストに表示されます。別のアカウントにある場合は、バケットの設定を確認して CloudFront にアクセス許可を付与してください。

アクセス許可を付与すると、CloudFront はバケットからオブジェクトを読み取ることができます。すべてのオブジェクトを 1 つのサブフォルダに入れる場合は、オリジンパスを指定することもできます。

ステップ 6.オリジンアクセスアイデンティティを設定する

ここから、Amazon S3 オリジンへのアクセスを制限できます。[はい] を選択すると、オリジンアクセスアイデンティティを作成するか、既存のものを選択するように求められます。これにより、CloudFront はバケットからオブジェクトを読み取ることができます。CloudFront がバケットポリシーを自動的に更新できるようにするオプションもあります。

アクセスを制限しないことを選択した場合、ユーザーが CloudFront をバイパスして、S3 バケット URL を介してコンテンツに直接アクセスできる可能性があります。プライベートなコンテンツや機密性の高いコンテンツについては、適切なアクセス制限を設定することが重要です。

このセクションでは、すべてのオブジェクトを 1 つのサブフォルダに保存する場合に、オリジンパスを指定することもできます。CloudFront がリクエストのたびにオリジンに転送する値を指定したオリジンカスタムヘッダーを指定できます。これは、どのリクエストが CloudFront から来たのか、他のクライアントから来たのかを示すので、カスタムオリジンの場合に便利です。

ステップ 7.デフォルトのキャッシュ動作を設定する

その後、[デフォルトのキャッシュビヘイビア] 設定にさまざまなオプションが表示されます。

[ビューワープロトコルポリシー] では、HTTP および HTTPS プロトコルの処理方法を選択できます。たとえば、HTTP リクエストを HTTPS にリダイレクトするように選択できます。これにより、どちらのプロトコルを使用するリクエストもサポートできます。HTTPS のみをサポートするように指定することもできます。その場合、HTTP トラフィックは破棄されます。これにより、ウェブセキュリティのベストプラクティスに確実に準拠できます。

CloudFront では、どの HTTP メソッドを受け付けたいかを指定できます。デフォルト設定は GET、HEAD です。他のオプション (GET、HEAD、OPTIONS または GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE) のいずれかを選択すると、CloudFront が OPTIONS メソッドをキャッシュする方法を設定することになります。

その後、オリジンに転送する HTTP ヘッダーを指定できます。通常は、Amazon S3 オリジンに関連するリクエストとレスポンスの動作に応じてヘッダーを許可することをお勧めします。特に、オリジンが特定の HTTP ヘッダーを調べてどのオブジェクトを返すかを決定している場合は、それらを許可する必要があります。すべての HTTP ヘッダーを転送すると、CloudFront は実際にはキャッシュレイヤーをバイパスし、オブジェクトをまったくキャッシュしようとしません。

ステップ 8.TTL を設定する

次のセクションでは、期限が切れるまでにコンテンツがキャッシュに保持される時間を管理する有効期限 (TTL) を指定できます。デフォルトでは、「Origin キャッシュヘッダーを使用」が選択されます。または、CloudFront キャッシュに保存するオブジェクトの時間制限の上限と下限をカスタマイズすることもできます。

これらの設定を編集する場合、TTL の最小値と最大値を秒単位で入力するよう求められます。その後、ヘッダーが最小値から最大値までの範囲外の値を返した場合、CloudFront は TTL の最小値または最大値のいずれかを使用します。この範囲内であれば、CloudFront はオリジンから返された値を使用します。

オリジンがキャッシュ制御ヘッダーを返さない場合は、代わりにデフォルトの TTL が使用されます。このサンプル動画では、デフォルト値は 86,400 秒に設定されています。これは 24 時間に相当します。

ステップ 9.追加機能を設定する

次のセクションでは、Cookieクエリ文字列パラメータに基づいてコンテンツをキャッシュすることを選択できます。

HTTP ヘッダーと同様に、オリジンに関連する Cookie またはクエリ文字列値のみを許可することをお勧めします。これらを転送しても、CDN は引き続きキャッシュしようとします。すべてを転送する場合は注意してください。CloudFront がすべてを転送した場合、キャッシュヒットレートが大幅に低下する可能性があります。その結果、クエリと Cookie の値にはさまざまなバリエーションがあるため、多数のオブジェクトが複数回キャッシュされることがあります。

さらに、以下のフィールドでその他のオプションがあります。

[ディストリビューション設定] では、CloudFront ネットワークのどの部分を使用するかを指定できます。デフォルトでは、CloudFront は、パフォーマンスの最大化のために、すべてのエッジロケーションを使用します。これにより、コンテンツを世界中にできるだけ早く配信できます。

米国、カナダ、ヨーロッパなど、特定のリージョンでのみ視聴者が見込まれる場合は、その地域のみを低価格クラスとして指定できます。これは、それらのリージョン以外の視聴者がコンテンツにアクセスできないという意味ではありません。CloudFront は視聴者を最も近いエッジロケーションにルーティングするだけです。CloudFront で AWS ウェブアプリケーションファイアウォール (AWS WAF) を使用する場合は、ここでそれらの設定を行うこともできます。

ディストリビューションを保存する前に、SSL 証明書を管理することが重要です。ここには次の 2 つのオプションがあります。

  • デフォルトの CloudFront 証明書を使用します。
  • AWS Certificate Manager (ACM) からカスタム SSL 証明書をアップロードまたはリクエストし、それを CloudFront ディストリビューションに関連付けます。これはカスタムドメインを使用する場合に適しています。

最後に、残りの設定を使用して以下を指定できます。

  • どのサポート対象の HTTP バージョンを使用するか。
  • ログ記録を使用するかどうか、そしてアクセスログの保存に CloudFront がどのログ用バケットを使用するか。
  • Cookie ログ記録をアクティブにするかどうか。

そこから、説明を入力してディストリビューションを作成できます。保存後、ディストリビューションが世界中にデプロイされるまでに約 15 分かかります。

ステップ 10.CloudFront ディストリビューションをテストする

ディストリビューションの準備ができたら、クリックして設定を確認できます。最初の画面には、いくつかのタブと指定した設定が表示されます。そこから、必要に応じてオリジンや複数のキャッシュ動作を追加できます。

CloudFront では、[カスタムエラーレスポンスを作成] を選択することで、カスタムエラーページを作成したり、エラーレスポンスがキャッシュに保持される期間を変更したりすることもできます。これらの設定は、HTTP エラーコードごとに調整できます。たとえば、403 が発生するたびに再試行したい場合、[最小 TTL] を 0 秒に指定できます。デフォルトでは、CloudFront はすべてを 300 秒間キャッシュして、オリジンの負荷をいくらか軽減します。必要に応じて、エラーコードごとにカスタムエラーレスポンスを作成することもできます。

[制限] タブで [地域制限を有効化] して、特定の地域の視聴者にコンテンツの閲覧を許可または禁止できます。[キャッシュ削除] タブで、CloudFront エッジキャッシュからカスタムオブジェクトを削除できます。最後に、[タグ] タブを使用してカスタムタグを適用すると、ディストリビューションを整理して識別しやすくなります。

完了したら、ドメインをコピーしてブラウザに貼り付け、ディストリビューションの動作を確認します。また、Amazon EC2 ウェブサーバーインスタンスで CloudFront を使用してアプリケーションの動的コンテンツを配信する方法を確認できます。

CloudFront の使用を開始するのに役立つ Amazon CloudFormation テンプレート

Amazon CloudFormation テンプレートは、CloudFront の使用を開始する際にも役立ちます。 このテンプレートでは S3 バケットを起動して静的ファイルを大量に保存し、そのコンテンツを CloudFront CDN 経由でユーザーに配信します。

詳細については、「Amazon S3 + Amazon CloudFront: クラウドでの協調相手」というタイトルのブログ投稿を読んで、CloudFormation テンプレートを入手してください。

CloudFront によるコンテンツ配信に関するその他のリソース

CloudFront の開始方法に不明な点がありますか? コンテンツ配信ネットワークの利用を開始するためのガイドを参照するか、Amazon Web Services コンテンツ配信ネットワークのドキュメントハブにアクセスしてください。

S3 での CloudFront ディストリビューションの管理に関する以下のリソースを、プレミアムサポートナレッジセンターで確認してください。

Amazon CloudFront リソースに関する詳細

リソースのページにアクセスする
構築の準備はできましたか?
Amazon CloudFront の使用を無料で開始する
ご不明な点がありますか?
お問い合わせ