Я создаю перенаправление URL S3, ничего особенного, только набор объектов нулевой длины с заполненной мета-ссылкой WebsiteRedirectLocation. S3 bucket настроен для серверов stati c веб-сайтов, для политики bucket установлено значение publi c, et c. Это работает просто отлично.
ОДНАКО - я также хочу заблокировать определенные файлы в корзине - в частности, некоторые HTML файлы, которые служат для управления перенаправлениями (например, добавление новых перенаправлений). При традиционной настройке я могу использовать перенаправления, а также отлично обслуживать страницу HTML. Но чтобы его заблокировать, мне нужно использовать Cloudfront и Lambda@edge, как в этих сообщениях:
https://douglasduhaime.com/posts/s3-lambda-auth.html
http://kynatro.com/blog/2018/01/03/a-step-by-step-guide-to-creating-a-password-protected-s3-bucket/
Я изменил скрипт lambda@edge, чтобы запрашивать только пароль, если запрашивается страница администратора (или ее ресурсы, такие как CSS / JS). Если запрошенный путь является чем-то другим (предположительно, файл перенаправления), пользователю не предлагается пароль. И да, я мог бы также установить правило поведения в Cloudfront, чтобы решить, когда использовать функцию Lambda для запроса пароля.
И это работает вроде. Когда я следую этим инструкциям и захожу на мой сайт по URL-адресу Cloudfront, меня действительно запрашивают пароль, когда я захожу на root моего сайта - на страницу администратора. Тем не менее, перенаправления не будут работать. Если я пытаюсь загрузить перенаправление, браузер просто загружает его.
Теперь, в другом посте кто-то предложил мне изменить мою конечную точку распространения Cloudfront на конечную точку S3 Bucket WEBSITE - что, я думаю, также означает изменение политики корзины обратно в режим веб-сайта и публикацию c, которая отстой, потому что теперь она доступна вне политики Cloudfront, которая мне не нужна. Кроме того - Cloudfront больше не обслуживает указанный индексный файл, что не является худшим.
SO - возможно ли заблокировать мое ведро, сервер полностью через Cloudfront с Lambda@edge НО также имеет Cloudfront уважает эти перенаправления, а не просто запросить загрузку? Есть ли в Cloudfront параметр для уважения заголовков? Нужно ли устанавливать разные правила поведения для разных файлов (HTML против перенаправлений)?