Amazon S3 バケットを使用して静的ウェブサイトをホストしています。バケットが、ウェブサイトのインデックスページではなく、オブジェクトのリストを返すのはなぜですか?
静的ウェブサイトをホストするために Amazon Simple Storage Service (Amazon S3) バケットを使用しています。バケットにリクエストを送信すると、ウェブサイトでセットアップしたインデックスページではなく、オブジェクトの XML リストが表示されます。何が起きているのでしょうか? Amazon S3 がインデックスページを返すようにするにはどうすればよいですか?
簡単な説明
Amazon S3 バケットには、ウェブサイトエンドポイントと REST API エンドポイントの両方があります。ウェブサイトエンドポイントは、以下の形式を使用します。
bucket-name.s3-website-us-west-2.amazonaws.com
REST API エンドポイントは、以下の形式を使用します。
bucket-name.s3-us-west-2.amazonaws.com
GET リクエストをバケットに送信する場合は、Amazon S3 からインデックスページ (Amazon S3 コンソールでは「インデックスドキュメント」と呼ばれる) が返るように、リクエストをウェブサイトエンドポイントに送信する必要があります。GET リクエストを REST API エンドポイントに送信すると、Amazon S3 よりバケット内のオブジェクトのリストが返ります。
Amazon S3 オリジンで Amazon CloudFront ディストリビューションを使用する場合、Amazon S3 がインデックスページを返すようにするには、インデックスページをデフォルトのルートオブジェクトとして設定することも必要です。
重要: エンドポイントは AWS リージョンによって異なります。リージョン別のウェブサイトエンドポイントについては、Amazon Simple Storage Service ウェブサイトエンドポイントを参照してください。リージョン別の REST API エンドポイントについては、「AWS のリージョンとエンドポイント – Amazon Simple Storage Service (Amazon S3)」を参照してください。
解決方法
以下のステップに従い、バケットのウェブサイトエンドポイントを検索します。
- Amazon S3 コンソールを開きます。
- バケットリストから、静的ウェブサイトをホストするのに使用しているバケットを選択します。
- [Properties] ビューを選択し、[Static website hosting] を選択します。
[Endpoint] として表示される値がウェブサイトエンドポイントです。
Amazon S3 オリジンで CloudFront ディストリビューションを使用している場合は、以下のステップに従い、ディストリビューションのデフォルトルートオブジェクトをインデックスページに設定します。
- CloudFront コンソールを開きます。
- ディストリビューションリストから、S3 バケットに関連付けられたディストリビューションを選択します。
- [General] ビューから [Edit] を選択します。
- Default Root Object の欄に、インデックスページのオブジェクト名 (例: index.html) を入力します。
- [Yes, Edit] (はい、編集します) を選択します。