#amazon-web-services #amazon-s3
#amazon-web-services #amazon-s3
Вопрос:
Я использую AWS S3 с CloudFront для размещения статических веб-сайтов во вложенных подпапках корзин. В качестве примера у меня есть корзина, настроенная для my-domain.com
вложенных папок, например /path/to/site/
, в которых есть index.html
файл. В настройках корзины для my-domain.com
статического хостинга веб-сайта enabled
указан тип хостинга, Host a static website
а для индексного документа и документа с ошибкой задано значение index.html
.
Когда я загружаюсь my-domain.com/path/to/site/index.html
, я получаю ожидаемую отображаемую индексную страницу. Но, если я перейду к my-domain.com/path/to/site
или my-domain.com/path/to/site/
получу сообщение об ошибке AWS NoSuchKey по умолчанию.
Я следую документации AWS здесь, поэтому я думаю, что у меня все настроено правильно, поэтому я не понимаю, почему это не работает. Чего мне не хватает?
Ответ №1:
Для общей справки, невозможно указать корневой объект по умолчанию для подкаталогов в CloudFront. Из документов AWS CF:
Однако, если вы определяете корневой объект по умолчанию, запрос конечного пользователя для подкаталога вашего дистрибутива не возвращает корневой объект по умолчанию. Например, предположим index.html является вашим корневым объектом по умолчанию, и этот CloudFront получает запрос конечного пользователя на каталог установки в вашем дистрибутиве CloudFront:
http://d111111abcdef8.cloudfront.net/install/
CloudFront не возвращает корневой объект по умолчанию, даже если копия index.html появится в каталоге установки.
Вы можете сделать это через S3, и я понимаю, что вы пытаетесь это сделать, как правильно объяснено здесь .
Недавно у меня была похожая ситуация, и это было потому, что файл index.html не был настроен на общедоступный доступ. Итак, когда вы загружаете файл в S3, в консоли S3 выберите файл, а затем перейдите к Действиям -> Опубликовать. Это необходимо сделать, даже если в вашей корзине включен статический веб-хостинг. По сути, каждый раз, когда вы загружаете файл вручную.
Если вы планируете сделать это программно или с помощью AWS-cli, вы можете установить флаг, чтобы сделать их общедоступными (разрешение на чтение для всех).