API-шлюз с лямбда-прокси, генерирующий InternalServerError - PullRequest
0 голосов
/ 29 июня 2018

У меня есть простая лямбда, которую я открываю через шлюз 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"
  }
}
...