Как обслуживать статический веб-контент из S3, поддерживаемый несколькими группами из разных регионов - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь обслуживать статический веб-контент (файлы HTML, CSS и JS) из сегментов S3. Я знаю, что могу перейти на вкладку свойств корзины и выбрать элемент Use this bucket to host a website из поля Static website hosting. И я уверен, что этот шаг все еще будет частью решения, которое я ищу, но это не все.

Вот что я пытаюсь сделать:

Развертывая один и тот же контент в нескольких регионах и в зависимости от доступности и / или задержки, предоставьте услугу клиенту.

Что касается API Gateway, я знаю, как это сделать. Я должен создать один и тот же шлюз API (наряду с основными лямбда-функциями) и пользовательские доменные имена во всех регионах. Затем создайте тот же домен на маршруте 53 (типа CNAME) и выберите «Задержка в качестве политики маршрутизации». Можно также настроить проверку работоспособности для набора записей, чтобы периодически проверять доступность функций API-шлюза и лямбды.

Теперь я хочу сделать то же самое для корзины S3 и моего статического контента. то есть я хочу развернуть один и тот же контент в разных регионах и каким-то образом настроить Маршрут 53 для направления запроса в ближайший доступный сегмент . Раньше я использовал CloudFront, но мне кажется, что в этой настройке я могу ввести только одну корзину.

Кто-нибудь знает, как я могу подать свой статический контент из нескольких блоков? Если вы собираетесь предложить CouldFront, расскажите, пожалуйста, как вы планируете использовать несколько сегментов.

Ответы [ 2 ]

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

Это возможно с CloudFront, использующим Lambda @ Edge для изменения источника на основе ответа из маршрута 53.

Пожалуйста, обратитесь к этому блогу за примером кода Lambda @ Edge, чтобы сделать это - https://aws.amazon.com/blogs/apn/using-amazon-cloudfront-with-multi-region-amazon-s3-origins/

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

Вы можете сгенерировать сертификат , настроить дистрибутив CloudFront , чтобы получить контент из своего сегмента, а затем указать свой домен для распространения с помощью Route53. Вы получаете бесплатный https, и вы также можете добавить несколько сегментов S3 в качестве источника для вашего дистрибутива.

enter image description here

Из документов AWS:

After you configure CloudFront to deliver your content, here's what happens when users request your objects:

1. A user accesses your website or application and requests one or more objects, such as an image file and an HTML file.

2. DNS routes the request to the CloudFront edge location that can best serve the request—typically the nearest CloudFront edge location in terms of latency—and routes the request to that edge location.

3. In the edge location, CloudFront checks its cache for the requested files. If the files are in the cache, CloudFront returns them to the user. If the files are not in the cache, it does the following:

3a. CloudFront compares the request with the specifications in your distribution and forwards the request for the files to the applicable origin server for the corresponding file type—for example, to your Amazon S3 bucket for image files and to your HTTP server for the HTML files.

3b. The origin servers send the files back to the CloudFront edge location.

3c. As soon as the first byte arrives from the origin, CloudFront begins to forward the files to the user. CloudFront also adds the files to the cache in the edge location for the next time someone requests those files.

P.D. Имейте в виду, что это только для статического контента!

...