Я хочу отправить сжатые данные (gzip) на некоторый URL, который вызовет (прокси) лямбда-функцию, которая будет распаковывать данные.
Лямбда-функция (NodeJS 8):
let zlib = require('zlib');
exports.handler = async (event) => {
let decompressedData = zlib.gunzipSync(event['body'])
return {
"statusCode": 200,
"body": decompressedData.toString()
};
};
Я запускаю его с помощью команды curl для URL (через шлюз API) для некоторого файла, который я сжал example.gz
с помощью gzip:
curl -X POST --data-binary @example.gz https://URL...
В результате я получаю:
{"message": "Internal server error"}
А ошибка такая (входит в Cloudwatch):
"errorMessage": "incorrect header check",
"errorType": "Error",
"stackTrace": [
"Gunzip.zlibOnError (zlib.js:153:15)",
"Gunzip._processChunk (zlib.js:411:30)",
"zlibBufferSync (zlib.js:144:38)",
"Object.gunzipSync (zlib.js:590:14)",
"exports.handler (/var/task/test_index.js:5:33)"
]
Когда я смотрю на сам event['body']
, я вижу точные данные, как я вижу в example.gz
. Возможно, мне нужен какой-то специальный заголовок? Я просто хочу передать данные как есть.