2017-01-10 4 views
2

Я понимаю, что с ноября 2016 года API Gateway теперь поддерживает двоичные типы носителей. Можно ли вернуть сжатый HTTP из лямбда-прокси?AWS API Gateway Compressed Response

У меня есть экспресс-приложение js, которое нуждается в возврате сжатого вывода (из запроса базы данных), в противном случае тело ответа превышает лимит тела лямбда-ответа.

Спасибо!

+0

К сожалению, API шлюз не поддерживает сжатие HTTP. Однако он учитывает будущее развитие. И передача двоичного вывода из Lambda в API Gateway не поддерживается. –

ответ

1

Вы можете вернуть сжатые данные в кодированную base64 строку из Lambda в API Gateway.

Затем вы можете использовать функцию двоичных типов носителей, чтобы преобразовать закодированную base64 строку в двоичные данные перед возвратом клиенту.

Если вы хотите, чтобы заставить API шлюз для возврата двоичных данных вместо того, чтобы уважающий заголовка принять, вы можете установить свойство contentHandling в ответ интеграционного CONVENT_TO_BINARY с помощью CLI.

aws apigateway update-integration-response \ 
    --rest-api-id <api-id> \ 
    --resource-id <resource-id> \ 
    --http-method GET \ 
    --status-code 200 \ 
    --patch-operations '[{"op" : "replace", "path" : "/contentHandling", "value" : "CONVERT_TO_BINARY"}]' 

See example of binary support with Lambda.

+0

Спасибо. Поэтому, если у меня есть строка json, которую я gzip (content-type: application/json, content-encoding: gzip), и отправьте это как закодированную в base64 строку, API-шлюз сможет перевести это обратно в двоичный файл и передать его на мой клиент? – galacticpresident

+0

API Gateway не будет распаковывать ваши данные и передавать их вашему клиенту. Ваш клиент должен знать, как обращаться с данными gzip. –

+1

Спасибо! Я должен был взломать способ декодирования/развязки на клиенте, но это сработало. – galacticpresident

Смежные вопросы