AWS API Gateway返回HTML

时间:2017-06-21 21:07:20

标签: amazon-web-services aws-lambda aws-api-gateway serverless-architecture

我正在使用AWS labs的无服务器容器(https://github.com/awslabs/aws-serverless-java-container)来处理lambda入口点和响应返回HTML的lambda。它似乎调用lambda并从lambda返回HTML。但是,API Gateway会抛出一个处理响应的拟合。我使用API​​网关作为代理,而不是配置单个端点。

  

Wed Jun 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 \ n \     \ Page Title \ r \ n \ r \ n \ r \ n \ n \ n     \ \ r \ n \ r \ n \ n \ n \     \ r \ n \ r \ n ... [截止]   2017年6月21日星期三20:53:29 UTC:终点响应标题:{x-amzn-Remapped-Content-Length = 0,x-amzn-RequestId = adb2b101-56c3-11e7-afc6-8383d836980f,Connection = keep-alive, Content-Length = 17551,Date = Wed,21 Jun 2017 20:53:29 GMT,X-Amzn-Trace-Id = root = 1-594adcc9-6987c6ed102696c505538b02; sampled = 0,Content-Type = application / octet-stream}   Wed Jun 21 20:53:29 UTC 2017:由于配置错误导致执行失败:格式错误的Lambda代理响应   Wed Jun 21 20:53:29 UTC 2017:方法已完成,状态:502

从日志中可以看出,AWS自己的Java对象AwsProxyResponse正确地包装了AWS编码的HTML内容。你看到它返回正确的正文和text / html标题。似乎API Gateway随后会处理来自AWS自身响应的响应。

当lambda的响应是Content-Type时,如何让AWS Gateway正确处理响应:test / html?

1 个答案:

答案 0 :(得分:3)

Lambda函数的响应看起来不正确。它看起来是一个没有任何格式的原始字符串。

它应该是JSON格式:

{
  "statusCode": num,
  "headers" : {
    "key" : "value"
  },
  "body" : "anything"
}