我为我的代理服务器创建了aws apigateway lambda集成 . 当我向网关发出请求时,请求成功完成 . lambda函数也成功执行,并在outputCode为200的输出流中写入响应 . 但是apigateway总是返回502 .
handleRequest()的片段:
BufferedReader reader = new BufferedReader(new
InputStreamReader(inputStream));
JSONObject event = (JSONObject) parser.parse(reader);
request = Input.builder().setEvent(event).build();
Response response = requestManager.handleRequest(request);
logger.log(String.format("Response [%s]", response.toString()));
JSONObject responseJson = new JSONObject();
responseJson.put("statusCode", response.getStatusCode());
responseJson.put("headers", response.getHeaders());
JSONObject jsonBody = (JSONObject) parser.parse(response.getBody());
responseJson.put("body", jsonBody);
OutputStreamWriter writer = new OutputStreamWriter(outputStream, "UTF-8");
logger.log("response recieved");
logger.log(String.format("responseJson [%s]", responseJson));
writer.write(responseJson.toJSONString());
writer.close();
logger.log(String.format("output stream [%s]", outputStream));
我错过了什么吗?
3 回答
我遇到了同样的问题,我的所有日志都说lambda已成功执行,但API Gateway仍在每次请求时返回502s . 事实证明,我忘了在API网关控制台中配置响应状态代码,因此它会抛出错误,因为即使格式正确,响应也是“错误的” . 只需将状态代码200,400,403等添加到网关上的路线即可解决您的问题 .
在调用
context.succeed(event)
或其他一些调用context
之前,请确保您使用响应命中了callback
.这是我的问题,并且我的
callback
首先修复了持久的502
res .Lambda的502错误通常表明您正在使用Lambda代理方法而不生成正确的JSON响应 . 确保您的回复符合appropriate format .
如果您仍然遇到问题,请分享您的Lambda函数生成的示例JSON .