Использование корзины S3 для обслуживания нескольких веб-сайтов с использованием единого дистрибутива облачного фронта - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть корзина S3, которая содержит две папки my-experience и test-experience, обе из которых содержат веб-сайт.Я хочу использовать дистрибутив CloudFront для обслуживания сайтов из этих папок.Я хочу добиться этого:

Я хочу создать дистрибутив корзины S3 с корневым объектом по умолчанию index.html, а затем, когда пользователь переходит на awd729398dh3d.cloudfront.net/test-experience, я хочу обслуживать свой веб-сайт из test-experience папка и когда он идет в awd729398dh3d.cloudfront.net/my-experience Я хочу обслуживать веб-сайт из папки my-experience.

Что я сделал:

Я создалS3 ведро, а затем создал папки внутри ведра.корень был пустым.

Я создал дистрибутив облачного фронта для своего контейнера и установил корневой объект по умолчанию равным index.html.

Теперь, когда я перехожу по ссылке облачного фронта, я ничего не получаю.Я также пытался создавать разные источники.

1 Ответ

0 голосов
/ 27 апреля 2019

Корневой объект по умолчанию применяется только при запросе root url, в вашем случае при запросе awd729398dh3d.cloudfront.net или awd729398dh3d.cloudfront.net/.

Если вы хотите перенаправить awd729398dh3d.cloudfront.net/my-experience на *От 1008 * или awd729398dh3d.cloudfront.net/test-experience до awd729398dh3d.cloudfront.net/test-experience/index.html вам потребуется переписать URL с помощью Origin Request Lambda @ Edge функции:

exports.handler = (event, context, callback) => {
  const { request } = event.Records[0].cf;

  // Rewrite uri if needed
  if (/\/my-experience\/?$/.test(request.uri)) request.uri = '/my-experience/index.html';
  if (/\/test-experience\/?$/.test(request.uri)) request.uri = '/test-experience/index.html';

  callback(null, request);
};
...