AWS API Gateway возвращает HTML

Я использую серверный контейнер AWS labs ( https://github.com/awslabs/aws-serverless-java-container) для обработки лямбда-точки входа и ответа для лямбда-выражения, возвращающего HTML. Похоже, что он вызывает лямбду и возвращает HTML просто отлично от лямбды. Тем не менее, API-шлюз затем обрабатывает ответ. Я использую API-шлюз в качестве прокси-сервера, а не настраиваю отдельные конечные точки.

Ср 21 июня 20:53:29 UTC 2017: Тело ответа конечной точки до преобразований: --- statusCode: 200 заголовков: Тип контента: "text/html" тело: "\r\n\r\nhttp://www.w3.org/1999/xhtml\"\r\n \ \ lang=\"en\">\r\n \r\n \r\n \ \ Заголовок страницы \r\n \r\n \r\n \ \ \r\n \r\n\ \ \r\n \r\n ... [TRUNCATED] Ср. 21 июня 20:53:29 UTC 2017: Заголовки ответа конечной точки: {x-amzn-Remapped-Content-Length=0, x-amzn-RequestId=adb2b101-56c3-11e7-afc6-8383d836980f, соединение =keep-alive, Content-Length=17551, дата = ср, 21 июня 2017 20:53:29 GMT, X-Amzn-Trace-Id=root=1-594adcc9-6987c6ed102696c505538b02; выборка =0, Content-Type=application/octet-stream} Ср. 21 июня 20:53:29 UTC 2017: Выполнение не выполнено из-за ошибки конфигурации: неверный ответ лямбда-прокси ср 21 июня 20:53:29 UTC 2017: Метод завершен со статусом: 502

Как видно из журналов, собственный объект Java AWS, AwsProxyResponse, правильно оборачивает содержимое HTML, как его кодировал AWS. Вы видите, что он возвращает правильные заголовки body и text / html. Похоже, что API-шлюз взорвался, обрабатывая ответ от собственного ответа AWS.

Как заставить AWS Gateway правильно обрабатывать ответ, когда лямбда-ответом является Content-Type: test/html?

1 ответ

Решение

Ответ от функции Lambda не выглядит правильным. Появляется необработанная строка без какого-либо формата.

Это должен быть JSON в формате:

{
  "statusCode": num,
  "headers" : {
    "key" : "value"
  },
  "body" : "anything"
}
Другие вопросы по тегам