AmazonS3で静的サイトを提供することを検討しています。バケットを作成してファイルをアップロードしました。 AWSマネジメントコンソールの[ウェブサイト]タブで、[有効]をオンにし、[インデックスドキュメント]フィールドにindex.html
と入力しました。次のバケットポリシーがあります。
{
"Version": "2008-10-17",
"Id": "924a2348-de0e-43aa-bb06-83adbcd1db22",
"Statement": [
{
"Sid": "PublicReadForGetBucketObjects",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
my-bucket
の代わりにバケットの名前があります。 「権限」タブで、「全員」にリスト機能も付与しました。
my-bucket.s3.amazonaws.com/index.html
にアクセスしようとすると、私のページ(およびその画像、CSSなど)が期待どおりに表示されます。ただし、my-bucket.s3.amazonaws.com
またはmy-bucket.s3.amazonaws.com/
に移動すると、ページが表示される代わりに、ディレクトリリストのXMLファイルが表示されます。 my-bucket.s3.amazonaws.com/subdirectory
に移動しようとすると、「指定されたキーが存在しません」というエラーが(XMLで)表示されます。最も奇妙なことに、my-bucket.s3.amazonaws.com/subdirectory/
(末尾にスラッシュを付けて)に移動しようとすると、ページは読み込まれませんが、ブラウザはdownload
という名前の空のファイルをダウンロードします。 (もう一度、my-bucket.s3.amazonaws.com/subdirectory/index.html
に移動すると、期待どおりにページが表示されます。)
私はここで何か間違ったことをしていますか?ディレクトリ名がリクエストされたときにS3にindex.html
ファイルを表示させるにはどうすればよいですか?