Выполнение внутреннего перенаправления на Amazon CloudFront в обработчике ошибок 4XX - PullRequest
0 голосов
/ 27 марта 2019

Мы бы хотели обслуживать несколько тестовых доменов из одного сегмента S3, используя CloudFront в качестве внешнего интерфейса. А именно, https://test-1.domain.com/index.html переходит к bucket-1.s3.amazonaws.com/test-1/index.html, https://test-2.domain.com/index.html до bucket-1.s3.amazonaws.com/test-2/index.html и так далее. Проблема в том, что наше веб-приложение является SPA, поэтому, когда в корзине S3 нет содержимого, мы должны вернуть 200, а не 404, скажем, https://test-2.domain.com/some/url должно получить bucket-1.s3.amazonaws.com/test-2/index.html без изменения URL-адреса (таким образом, 302 не вариант) , Было бы вполне возможно использовать параметр «Страницы ошибок» для распределения CloudFront, если бы мы обслуживали только один домен, но нам нужно различать test-1. и test-2. и использовать index.html s из разных подпапок. Это все еще возможно в любом случае?

1 Ответ

0 голосов
/ 28 марта 2019

Я думаю, что это возможно, используя Lambda@edge Функция запроса источника.Вот как я бы сделал это сложным образом:

  1. HOST-заголовок белого списка (я знаю, что мы не должны делать это для S3)
  2. Напишите функцию Lambda@edgeчтобы прочитать значения заголовка HOST и, если оно test-1.domain.com, выберите Origin с путем как

    bucket-1.s3.amazonaws.com/test-1/ else bucket-1.s3.amazonaws.com/test-2/

https://aws.amazon.com/blogs/networking-and-content-delivery/dynamically-route-viewer-requests-to-any-origin-using-lambdaedge/

...