Я занимаюсь обслуживанием своего статического сайта с помощью Amazon S3. Я создал ведро и загрузил свои файлы; на вкладке "Веб-сайт" в консоли управления AWS я проверил "Включено" и ввел index.html
в поле "Index Document". У меня есть следующая политика ведра:
{
"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
при запросе имени каталога?