Я переношу статический веб-сайт с IIS на Amazon S3, используя CloudFront для https. Старый сайт использовал модуль перезаписи URL и имел 301 карту перенаправления с более чем 200 записями. Вот пример:
example.com?pageID=1234 => example.com/about/history
Я хочу убедиться, что все перенаправления переносятся вместе с веб-сайтом. Многие ключи ввода включают строки запроса, поэтому я не думаю, что правила перенаправления S3 XML или перенаправления метаданных объектов будут работать для них (поправьте меня, если я ошибаюсь).
Я хочу использовать триггер события пользовательского запроса CloudFront с функцией Lambda @ Edge, чтобы создать карту перезаписи пар ключ-значение (что-то вроде того, что описано в это руководство). Функция получит URI запроса и, если он соответствует любому из ключей на карте, изменит запрос, чтобы отразить соответствующее значение.
Я мог бы жестко закодировать карту перезаписи в функцию Lambda, но со временем на карту будут добавляться новые записи. Я бы предпочел не создавать новую версию функции, а затем редактировать поведение CloudFront для использования этой новой версии всякий раз, когда требуется новый персональный URL. Это кажется опасным и подверженным ошибкам, которые могут испортить CloudFront.
Кто-нибудь знает, как создать карту перезаписи (файл JSON или что-то в этом роде?), Которую можно прикрепить к функции Lambda и отредактировать, не изменяя саму функцию Lambda? Спасибо!
Я бы спас Файл конфигурации JSON в Ковш S3 и сделал Лямбда @ Edge прочтите его при запуске (хотя не для каждого запроса! только один раз при запуске Lambda).
Дайте Lambda соответствующее разрешение IAM на чтение файла с S3, и все готово.
Надеюсь, это поможет :)