Я собираюсь обслуживать свой статический сайт с помощью Amazon S3. Я создал корзину и загрузил свои файлы; на вкладке «Веб-сайт» в Консоли управления 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
при запросе имени каталога?