Как настроить Canary Release для двух CloudFront в AWS? - PullRequest
0 голосов
/ 17 сентября 2018

Наш веб-сайт - это просто веб-приложение.Поэтому мы использовали CloudFront и S3 для его размещения.Теперь я хочу использовать канарский релиз, чтобы перенаправить 5% пользователей на новую версию для некоторого тестирования в первую очередь.Но Я считаю, что AWS не может подойти к этому Я не могу понять, как к этому подойти.

enter image description here Например, на снимке экрана мне нужно привязать сертификат SSL к CloudFront A. Но один сертификат может привязываться только к одному CloudFront, что является ограничением AWS.Это означает, что сертификат не может быть привязан к CloudFront B.

Я понятия не имею, как решить проблему.Я не уверен, что неправильно понимаю сервис AWS или мое решение полностью неверно.

Любой комментарий будет высоко ценится.

ps Одним из решений, о котором я думаю, является написание прокси или функции APIGateway / lambda для принятия запроса и перенаправления в процентах.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Термин канарский выпуск не подходит для фронт-энда, он относится к вашим сервисам поддержки и должен выполняться только на уровне сервиса API REST. Поскольку в канареечной конфигурации это не значит, что пользователь всегда нажимает на канареечный выпуск или обычный выпуск, вместо этого у каждого запроса есть шанс попасть в любой из релизов, один запрос может попасть в канарейку, а затем следующий может попасть в старый выпуск.

Что касается внешнего интерфейса, вы можете пожелать, чтобы пользователи включали бета-функции или располагали совершенно другой размещенный сайт по адресу www.beta.yoursite.com,, который DNS разрешает в ваше ведро с выпусками моментальных снимков, тогда как www.yoursite.com. разрешает на нормальный сайт. Затем вы можете получить список пользователей бета-версии, которые будут выбраны случайным образом, и получить электронное письмо с предложением опробовать новый сайт в его бета-расположении. В вашем приложении вы можете пометить этих пользователей как имеющих бета-учетные данные, чтобы обеспечить доступ к бета-сайту только бета-пользователям, если хотите.

Обратите внимание, что даже если бы вы могли делать то, что вы предлагаете (я думаю, что есть какой-то способ с CloudFront), это будет плохой пользовательский опыт, поскольку пользователь может использовать 2 разных устройства при доступе к вашему сайту, а затем иметь 2 разных опыта но не знаю, что происходит.

РЕДАКТИРОВАТЬ: Комментировать Ответ - Как я уже сказал, я действительно не думаю, что вы хотите это сделать, но в любом случае вы должны разрешить ваш домен для apigateway / proxy / loadbalancer вместо корзина, которая затем направляет трафик на основе аутентифицированного пользователя либо на бета-сайт, либо на старый сайт. Таким образом, они не увидят другой домен. AFAIK нет способа сделать разрешение DNS на основе зарегистрированного пользователя в Route53, но также и DNS в целом. Я могу ошибаться, кто-то поправит меня, если так. Возможно, API-шлюз будет самым простым и использует лямбду для маршрутизации трафика на правильный сайт.

0 голосов
/ 17 сентября 2018

Хотя CloudFront не поддерживает это изначально, вы можете внедрить Canary Release, используя AWS Lambda @ Edge , который работает в CloudFront Edge Locations.Возможно, вам придется кодировать логику маршрутизации для пересылки определенного процента в определенные сегменты.

...