AWS serverless - изменить POST-запрос облачного фронта к GET-запросу на происхождение сайта s3 - PullRequest
0 голосов
/ 13 января 2019

У меня есть дистрибутив CloudFront, в котором источником является конечная точка веб-сайта s3 (для статического веб-приложения на s3)

Теперь моему веб-приложению на s3 требуется некоторая информация о пользователе, которая предоставляется только через запрос POST от iframe.

Я думал, что можно будет использовать функцию Lambda @ edge на этапе ViewerRequest, чтобы захватить информацию о пользователе, а затем изменить запрос на GET и добавить токен к источнику, прежде чем он запросит источник, таким образом позволяя s3 обслуживать.

Однако я не могу заставить его работать. это вообще возможно?

1 Ответ

0 голосов
/ 13 января 2019

Нельзя изменить метод HTTP в триггерной функции Lambda @ Edge, поскольку он доступен только для чтения.

метод (только для чтения)

HTTP-метод запроса средства просмотра.

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-event-structure.html#lambda-event-structure-request

Что вы можете сделать - это использовать AWS SDK для отправки запроса S3 из функции триггера и использовать полученное содержимое объекта для генерации ответа непосредственно из функции триггера .

Обратите внимание, что есть ограничения на размер ответа, который вы можете сгенерировать - для Viewer Request это 40 КБ. Для Происхождения Происхождения это - 1 МБ.

Конечно, вам не нужно извлекать контент из S3, обязательно. Вы можете получить его из любого места или встроить в саму функцию.

При такой настройке, поскольку функция генерирует ответ, CloudFront никогда не перенаправляет фактический запрос POST на S3.

...