Сжать js лямбда-ответ перед отправкой его на шлюз API - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть AWS лямбда, которая возвращает ответ размером более 6 МБ. (Я знаю, что он не идеален и ограничивает лямбда-предел AWS, который составляет 6 МБ для типа вызова лямбда-запроса RequestResponse).

В этом случае я получаю следующее сообщение об ошибке:

413 Request entity too large

Я хочу сжать этот ответ перед отправкой его в шлюз API. Моя лямбда находится в javascript, я использую zlib для сжатия ответа в формате gzip, но я получаю asyn c error.

Фрагмент кода:

const invocationResponse = await zlib.gzip(JSON.parse(data.Payload),function (error, result) {    
 if (error) throw error    return result
})

Error:

ProcessingLambdaInvoker: Error (asynchronously) invoking backend lambda:  TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be one of type string or Buffer. Received type object
    at validChunk (_stream_writable.js:272:10)
    at Gzip.Writable.write (_stream_writable.js:307:21)
    at Gzip.Writable.end (_stream_writable.js:617:10) 

Может кто-нибудь предложить лучший способ сжать ответ в js и отправить его обратно. Также я должен распаковать это на веб-интерфейсе, или браузер автоматически сделает это. Я знаю, что мне придется сжать его и затем закодировать, используя base64, прежде чем отправить его.

...