Не удается получить index.html для работы по умолчанию на статическом сайте AWS S3 во вложенной папке

#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, вы можете установить флаг, чтобы сделать их общедоступными (разрешение на чтение для всех).

введите описание изображения здесь