У меня есть простая лямбда, которую я открываю через шлюз API с интеграцией Lambda прокси.
Вот мой лямбда-код
exports.handler = main;
function main(event, context, callback) {
console.log("This will get s3 files")
//return "Succeed"
var responseText = {
message : "Succeeded"
}
return done(200, JSON.stringify(responseText), 'application/json', callback)
}
function done(statusCode, body, contentType, lambdaCallback, isBase64Encoded = false) {
lambdaCallback(null, {
statusCode: statusCode,
isBase64Encoded: isBase64Encoded,
body: body,
headers: {
'Content-Type': contentType
}
});
}
При нажатии на API Gateway выдается внутренняя ошибка сервера. Журналы API-шлюза в cloudwatch выглядят как -
Тело ответа конечной точки до преобразований: [Двоичные данные]
Заголовки ответа конечной точки: {X-Amz-Executed-Version = 2, x-amzn-Remapped-Content-Length = 0, Connection = keep-alive, x-amzn-RequestId = 8d332243-7b3d-11e8-afe1-c936514725a3, Content -Длина = 120, Дата = Пт, 29 июня 2018 01:41:32 GMT, X-Amzn-Trace-Id = root = 1-5b358e4c-623f1d6069f1dc0c3c25dda4; выборка = 0, Content-Type = application / json}
Выполнение не выполнено из-за ошибки конфигурации: невозможно base64 декодировать тело.
Если я вызову лямбду через консольный тест, я получу правильный ответ-
Response:
{
"statusCode": 200,
"isBase64Encoded": false,
"body": "{\"message\":\"Succeeded\"}",
"headers": {
"Content-Type": "application/json"
}
}