AWS Route 53 взвешенная маршрутизация до двух дистрибутивов облачного фронта - PullRequest
0 голосов
/ 25 октября 2018

Справочная информация:

У меня есть Javascript, размещенный в корзине S3 со статическим веб-сайтом + Распределение Cloudfront + Настройка маршрута 53.Мне нужен Cloudfront, потому что мне нужен собственный домен с поддержкой SSL.Это отлично работает.Например, к сценарию можно получить доступ по адресу https://app.example.org/myscript.js. Этот URL-адрес предоставляется клиентам для размещения на их веб-страницах, и я не могу его изменить.

Настройка в Route 53 выглядит следующим образом:

app.example.org => Cloudfont Distribution (s3://app.example.org)

Что я хочу:

Я хочу настроить промежуточную среду для новых функций.Я бы хотел направить 10% производственного запроса на другую версию скрипта.

То, что я пытался

Я пытался настроить еще одно ведро S3 со статическим webiste + облачный фронт с другим альтернативным доменным именем (например, app-beta.example.org),

Мне нужно использовать другой альтернативный поддомен, потому что Cloudfront не допускает одно и то же альтернативное имя домена с несколькими дистрибутивами.

В Route 53 я установил записи псевдонима A следующим образом:

app-beta.example.org => Alias Cloudfont Distribution (s3://app-beta.example.org) app.example.org => Alias app-beta.example.org (weighted 10) app.example.org => Alias Cloudfont Distribution (s3://app.example.org) (weighted 100)

Почему это не сработало

Оказалось, что это не будет работать:

Поскольку запрашиваемые домены одинаковы app.example.org, дистрибутив облачного фронта (s3: //app.example.org) будет принимать запрос независимо от записиapp.example.org => Alias app-beta.example.org.

Я думаю, что здесь Route 53 пытается перенаправить трафик в облачный фронт в соответствии с правилами веса, но в конце концов, когда запросы достигают облачного фронта, облачный фронт учитывает «альтернативное имя домена» и использует его с (app.example.org)независимо.

Как насчет того, чтобы не использовать cloudfront?

Я думал об использовании EC2 или EBS для сервера nginx, обслуживающего статические файлы javascript.Это может сработать.Но:

  • файл javascript будет запрошен во всем мире.Использование EC2 или EBS означает для некоторых пользователей более высокую задержку.Это не идеально.

  • это означает дополнительные ресурсы для управления и стоимости.

Как насчет lambda @ Edge?

Технически lambda @ Edge - идеальное решение, если оно дешевле.Да, это уже дешево ($ 0,0000006 за запрос), но в нашем случае мы заплатим за это более 10 тысяч долларов США.(скрипт запрашивается> 10 миллиардов раз в месяц, и для настройки требуется 2 лямбда-функции)

Вопрос

Есть ли другой способ, которым я могу достичьчто я хочу ?(т.е. постепенно выкатывать новую версию без изменения URL)

...