Назад | Перейти на главную страницу

Как проложить маршрут к Cloudfront + s3, а остальное - к ALB в Route53?

У проекта есть доменное имя foobar.com указывает на устаревшую систему, в которой размещаются и обслуживаются в основном статические файлы. Со временем проект стал более сложным, и в AWS ALB определенно /routes указываются на особо изолированные микроприложения (например, служба api nodejs, служба php, такая как cms, и т. д.); все это развернуто через AWS ECS. Но сегодня я хотел бы развернуть проект, который представляет собой просто статические файлы, на облачном сервере s3 + (чтобы воспользоваться преимуществами CDN и более низкой ценой), но использовать те же самые foobar.com + ALB и маршрут /foobar путь к локации s3 + cloudfront. Я еще не нашел решения и не уверен, можно ли его настроить? Какие варианты существуют для решения моего варианта использования? Итак, текущее состояние таково, что основное доменное имя указывает на запись A. ALIAS dualstack-alb.

Cloudfront имеет необязательный CNAME, но, как упоминалось выше, доменное имя foobar.com указывает на контейнер устаревшего проекта и только некоторые /routes в другом месте.

Когда создается новый дистрибутив, я получаю foobar.cloudfront.net домен, который я могу использовать для доступа к развернутым статическим файлам. Но очевидно, что это не то, что я хочу, и я бы хотел использовать основное доменное имя. foobar.com и когда /routeX просят указать или обслужить foobar.cloudfront.net. Это:

foobar.com > shows the legacy project, in ec2 container 1
foobar.com/cms > shows the cms project, in ec2 container 2
foobar.com/myNewProject/ > should show the X project, in s3

Следующая диаграмма демонстрирует, как это работает или должно работать:

После исследования, которое я провел до сих пор, кажется, что я должен указать запись A основного доменного имени в Cloudfront вместо того, чтобы запись A указывала на ALB. ALIAS dualstack.xxxxxxs-alb-xxxxx и есть облачный фронт /route укажите на s3. И все остальное в ALB. Вот откуда у меня вопрос!

Я просто шпионю в данный момент и не могу найти, как установить /route в s3 и все остальное в alb хотя! Я вижу параметр CNAME в облачном интерфейсе, но нет правил маршрутизации или чего-то подобного.

После некоторого исследования, просмотрев документацию, я нашел решение!

Во-первых, нам нужно указать DNS-запись A на Cloudfront, чтобы процесс Cloudfront выполнялся раньше всего.

Во-вторых, нам нужно определить источник контента, как описано здесь (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesDomainName).

В-третьих, мы указываем шаблоны путей (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesPathPattern), чтобы указать на источник контента.