デフォルトのルートオブジェクトの指定 - Amazon CloudFront

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

デフォルトのルートオブジェクトの指定

ディストリビューション内のオブジェクトをリクエストするのではなく、ユーザーがディストリビューションのルート URL をリクエストしたときに特定のオブジェクト (デフォルトのルートオブジェクト) を返す CloudFront ように を設定できます。デフォルトのルートオブジェクトを指定すると、ディストリビューションのコンテンツが公開されなくなります。

デフォルトのルートオブジェクトを指定する方法

ディストリビューションのコンテンツが公開されたり、エラーが返されたりすることを回避するには、以下のステップを実行して、ディストリビューションのデフォルトのルートオブジェクトを指定します。

ディストリビューションのデフォルトルートオブジェクトを指定するには
  1. デフォルトルートオブジェクトを、ディストリビューションが指しているオリジンにアップロードします。

    ファイルには、 CloudFront でサポートされるあらゆるタイプを使用できます。ファイル名に対する制約のリストについては、「」の DefaultRootObject要素の説明を参照してくださいDistributionConfig

    注記

    デフォルトのルートオブジェクトのファイル名が長すぎるか、無効な文字が含まれている場合、 はエラー CloudFront を返しますHTTP 400 Bad Request - InvalidDefaultRootObject。さらに、 はコードを 10 秒間 CloudFront キャッシュし (デフォルトで)、その結果をアクセスログに書き込みます。

  2. オブジェクトのアクセス許可が CloudFront 少なくとも readアクセス権を付与していることを確認します。

    Amazon S3 のアクセス権限の詳細については、Amazon Simple Storage Service ユーザーガイドの「Amazon S3 での Identity and Access Management」を参照してください。

  3. CloudFront コンソールまたは CloudFront API を使用して、デフォルトのルートオブジェクトを参照するようにディストリビューションを更新します。

    CloudFront コンソールを使用してデフォルトのルートオブジェクトを指定するには:

    1. にサインインAWS Management Consoleし、 で CloudFront コンソールを開きますhttps://console.aws.amazon.com/cloudfront/v4/home

    2. 上部ペインにあるディストリビューションのリストで、更新するディストリビューションを選択します。

    3. [Settings] (設定) ペインで、[General] (一般) タブの [Edit] (編集) を選択します。

    4. [Edit settings] (設定の編集) ダイアログボックスの [Default root object] (デフォルトルートオブジェクト) フィールドに、デフォルトルートオブジェクトのファイル名を入力します。

      オブジェクト名のみを入力します (例: index.html)。オブジェクト名の前に / を追加しないでください。

    5. [変更の保存] をクリックします。

    CloudFront API を使用して設定を更新するには、ディストリビューションの DefaultRootObject要素の値を指定します。 CloudFront API を使用してデフォルトのルートオブジェクトを指定する方法については、「Amazon CloudFront API リファレンス」のUpdateDistribution「」を参照してください。

  4. ルート URL を要求することで、デフォルトルートオブジェクトが有効になっていることを確認します。ブラウザにデフォルトルートオブジェクトが表示されない場合、以下のステップを実行します。

    1. CloudFront コンソールでディストリビューションのステータスを表示して、ディストリビューションが完全にデプロイされていることを確認します。

    2. ステップ 2 と 3 を繰り返し、適切な許可を付与したこと、およびデフォルトルートオブジェクトを指定するようにディストリビューションの構成を適切に更新したことを確認します。

デフォルトのルートオブジェクトの仕組み

次のリクエストはオブジェクト image.jpg を指すとします。

https://d111111abcdef8.cloudfront.net/image.jpg

これに対して、最初の例のように、次のリクエストは特定のオブジェクトではなく、同じディストリビューションのルート URL を指します。

https://d111111abcdef8.cloudfront.net/

デフォルトルートオブジェクトを定義した場合、ディストリビューションのルートを呼び出すエンドユーザーリクエストはデフォルトルートオブジェクトを返します。たとえば、ファイル index.html をデフォルトルートオブジェクトとして指定したと仮定します。

https://d111111abcdef8.cloudfront.net/

戻り値:

https://d111111abcdef8.cloudfront.net/index.html

注記

CloudFront は、末尾にスラッシュ (https://d111111abcdef8.cloudfront.net///) が複数ある URL が と等しいかどうかを判断しませんhttps://d111111abcdef8.cloudfront.net/。オリジンサーバーがその比較を行います。

デフォルトルートオブジェクトを定義しても、ディストリビューションのサブディレクトリに対するエンドユーザーリクエストはデフォルトルートオブジェクトを返しません。例えば、 index.htmlがデフォルトのルートオブジェクトであり、ディストリビューションの install ディレクトリ CloudFrontに対するエンドユーザーリクエスト CloudFront を受け取ったとします。

https://d111111abcdef8.cloudfront.net/install/

CloudFront は、 のコピーが install ディレクトリindex.htmlに表示されていても、デフォルトのルートオブジェクトを返しません。

が CloudFront サポートするすべての HTTP メソッドを許可するようにディストリビューションを設定すると、デフォルトのルートオブジェクトがすべてのメソッドに適用されます。例えば、デフォルトのルートオブジェクトが index.php で、リクエストをドメインのルート (https://example.com) POST に送信するようにアプリケーションを作成する場合、 CloudFront はリクエストを https://example.com/index.php. に送信します。

CloudFront デフォルトのルートオブジェクトの動作は、Amazon S3 インデックスドキュメントの動作とは異なります。Amazon S3 バケットをウェブサイトとして設定し、インデックスドキュメントを指定した場合、ユーザーがバケット内のサブディレクトリを要求しても、Amazon S3 はインデックスドキュメントを返します。(インデックスドキュメントのコピーがすべてのサブディレクトリに含まれる必要があります)。Amazon S3 バケットをウェブサイトとして設定する方法とインデックスドキュメントの詳細については、Amazon Simple Storage Service ユーザーガイドの「Amazon S3 でのウェブサイトのホスティング」を参照してください。

重要

デフォルトのルートオブジェクトはディス CloudFront トリビューションにのみ適用されます。オリジンのセキュリティを依然として管理する必要があります。例えば、Amazon S3 オリジンを使用する場合、Amazon S3 バケットの ACL も依然として適切に設定する必要があり、バケットに対する必要なアクセスレベルを確保する必要があります。

ルートオブジェクトを定義しない場合の CloudFront の動作

デフォルトルートオブジェクトを定義しない場合、ディストリビューションのルートの要求はオリジンサーバーに渡されます。Amazon S3 オリジンを使用する場合、以下のいずれかが返される場合があります。

  • Amazon S3 バケットの内容のリスト — 次のいずれかの条件の下では、 を使用してディストリビューション CloudFront にアクセスするすべてのユーザーに対し、オリジンの内容が表示されます。

    • バケットが適切に構成されていない。

    • ディストリビューションに関連付けられているバケット、およびバケット内のオブジェクトに対する Amazon S3 アクセス許可で、すべてのユーザーにアクセスが付与されている。

    • エンドユーザーがオリジンのルート URL を使用してオリジンにアクセスしている。

  • オリジンのプライベートコンテンツのリスト – オリジンをプライベートディストリビューションとして設定する場合 (自分と CloudFront アクセス権のみ)、ディストリビューションに関連付けられた Amazon S3 バケットの内容は、 を介してディストリビューションにアクセスするための認証情報を持つすべてのユーザーに表示されます CloudFront。この場合、ユーザーは、オリジンのルート URL を使用してコンテンツにアクセスできません。プライベートコンテンツの配信の詳細については、「署名付き URL と署名付き Cookie を使用したプライベートコンテンツの提供」を参照してください。

  • Error 403 Forbidden— CloudFront ディストリビューションに関連付けられた Amazon S3 バケットのアクセス許可、またはそのバケット内のオブジェクトのアクセス許可がすべてのユーザーへのアクセス CloudFront とすべてのユーザーへのアクセスを拒否した場合、このエラーを返します。