Шлюз Ap Лямбда : как включить сжатие

#amazon-web-services #api #aws-lambda #aws-api-gateway

Вопрос:

Я работаю над шлюзом API (REST API) с некоторой лямбда-функцией, созданной с помощью SAM.

Даже при включении сжатия gzip/conflate (путем установки минимального размера сжатия в моем шаблоне SAM или непосредственно в консоли шлюза API) ничего не происходит. Конечные точки по-прежнему возвращают несжатый ответ без заголовка кодировки (даже если запрос содержит заголовок accept-encoding: ‘gzip, deflate, br’).

Как я мог заставить это работать?

Ответ №1:

Для тех, кто заинтересован, проблема, по-видимому, связана с тем фактом, что интеграция шлюза/Лямбда выполняется в режиме AWS_PROXY, что означает, что Шлюз действует как чистый прокси-сервер и не изменяет запрос или ответ, поступающий в/из Лямбда.

Таким образом, он не сможет сжать ответ (так как для этого потребуется изменить содержимое и заголовки).

Обходной путь заключается в настройке дистрибутива CloudFront перед шлюзом со свойством «Сжатие: истина». CloudFront будет служить в качестве кэша перед шлюзом и обеспечивать сжатие в полете, когда это потребуется клиенту.