У проекта есть доменное имя 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), чтобы указать на источник контента.