我正在使用 AWS 实验室的无服务器容器 ( https://github.com/awslabs/aws-serverless-java-container ) 来处理返回 HTML 的 lambda 入口点和响应。似乎它调用了 lambda 并从 lambda 中返回 HTML 就好了。但是,API 网关随后会抛出一个合适的处理响应。我使用 API Gateway 作为代理,而不是配置单个端点。
2017 年 6 月 21 日星期三 20:53:29 UTC:转换前的端点响应正文:--- statusCode:200 标头:Content-Type:“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 ... [截断] Wed Jun 21 20:53:29 UTC 2017:端点响应标头:{x-amzn-Remapped-Content -长度=0,x-amzn-RequestId=adb2b101-56c3-11e7-afc6-8383d836980f,连接=保持活动,内容长度=17551,日期=星期三,2017 年 6 月 21 日 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 代理响应 2017 年 6 月 21 日星期三 20:53:29 UTC:方法完成,状态:502
从日志中可以看出,AWS 自己的 Java 对象 AwsProxyResponse 正确地包装了 AWS 编码的 HTML 内容。您会看到它返回正确的正文和 text/html 标头。似乎 API Gateway 会在处理来自 AWS 自己的响应的响应时崩溃。
当 lambda 的响应形式为 Content-Type: test/html 时,如何让 AWS Gateway 正确处理响应?