У меня ведро S3 называется www.mybucket.com У меня есть запись A: name = www.mybucket.com. Он хорошо отвечает с index.html, содержащимся в корзине.
Теперь я хочу отправить любой поддомен к этому сегменту.
Сначала я попробовал с конкретными поддоменами:
больше нет идей ...
Конечной целью будет перенаправление всех поддоменов в корзину. www.mybucket.com. Но также будет хороша возможность отправлять разные поддомены в разные корзины ...
Я не думаю, что это возможно. Это работает так: клиент решает www.mybucket.com к общей конечной точке S3, которая обслуживает миллионы других сегментов. Затем он отправляет HTTP-заголовок хоста Host: www.mybucket.com
. Затем служба S3 соответствует заголовку хоста www.mybucket.com
к имени вашего ведра www.mybucket.com
и служит index.html
файл оттуда. Вот как это работает.
Даже если вы сделаете A / ALIAS / CNAME *.mybucket.com
указывая на www.mybucket.com
это в конце по-прежнему разрешается в общий адрес S3 - так устроен DNS, ему не нужны промежуточные имена.
Теперь, если вы попытаетесь получить доступ xyz.mybucket.com
ваш браузер отправляет заголовок Host Host: xyz.mybucket.com
-> S3 не может сопоставить его ни с одним существующим ведром -> вы получаете NoSuchBucket ошибка.
Так что нет, так нельзя.
Возможное решение: вы можете использовать обратный прокси например на EC2 или в контейнере Fargate и точке *.mybucket.com
на это имя хоста прокси. Затем прокси отправит серверный запрос на S3 и предоставит файл клиенту. Обратной стороной является то, что все должно проходить через ваш прокси, жертвуя высокая доступность S3 API.
Надеюсь, это поможет :)