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