web-dev-qa-db-ja.com

/ fooまたは/ foo /を要求したときに、Amazon S3が/foo/index.htmlを自動的に提供しないのはなぜですか?

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ファイルを表示させるにはどうすればよいですか?

22
bdesham
15
Terrell Plotzki