Из-за недавнего простоя S3 на Восточном побережье я хочу спросить сообщество, как лучше всего реализовать отказоустойчивое решение для хостинга веб-сайтов S3?
Насколько я понимаю, вам нужно назвать корзину после вашего домена (например, example.com). Но этот сегмент зависит от региона, а имя сегмента глобально уникально, поэтому я не могу создать такой же в другом регионе. Итак, если этот регион выйдет из строя для корзины S3, не будет ли это означать, что мой веб-сайт не работает?
Короткий ответ: я не могу найти хороший способ, чтобы статический веб-сайт, размещенный на S3, пережил сбой в регионе без использования дополнительной логики или серверов. Мне было бы очень интересно, сможет ли кто-нибудь еще придумать способ.
Вы можете разместить CloudFront перед веб-сайтом S3. Если сегмент опустится, контент будет обслуживаться из кеша, даже если он устарел. Это, конечно, зависит от того, что контент находится в кеше для конечной точки, ближайшей к клиенту.
Вы можете использовать S3 перекрестная репликация чтобы переместить данные S3 в другой регион. Первоначально я думал, что вы можете использовать Route53 аварийная маршрутизация выбрать из рабочего ведра, но это не сработает. Межрегиональная репликация должна выполняться в сегменте с другим именем, при хостинге веб-сайтов S3 вы можете разместить веб-сайт только из сегмента, названного для домена. Мне было интересно, есть ли ручное решение, но вы не можете переименовывать сегменты, и если первый регион не работает, вы, вероятно, не можете удалить корзину с именем веб-сайта.
Я думал, что комбинация CloudFront и Route53 может работать, но это будет зависеть от создания двух дистрибутивов CloudFront, которые обслуживают контент для одного домена. Кажется, это невозможно.
Это не идеально, но я думаю, что вы могли бы сделать это с помощью EC2 и Route53. Создайте серверы в двух или более регионах, попросите их вручную проксировать содержимое S3 с помощью Nginx или аналогичного и балансируйте между ними с помощью Route53. Это побеждает суть хостинга S3 и в целом является ужасной идеей, но, вероятно, ее можно было бы заставить работать, если бы это было абсолютно необходимо.