首页 文章

aws apigateway lambda总是返回502

提问于
浏览
0

我为我的代理服务器创建了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 回答

  • 0

    我遇到了同样的问题,我的所有日志都说lambda已成功执行,但API Gateway仍在每次请求时返回502s . 事实证明,我忘了在API网关控制台中配置响应状态代码,因此它会抛出错误,因为即使格式正确,响应也是“错误的” . 只需将状态代码200,400,403等添加到网关上的路线即可解决您的问题 .

  • 0

    在调用 context.succeed(event) 或其他一些调用 context 之前,请确保您使用响应命中了 callback .

    这是我的问题,并且我的 callback 首先修复了持久的 502 res .

  • 2

    Lambda的502错误通常表明您正在使用Lambda代理方法而不生成正确的JSON响应 . 确保您的回复符合appropriate format .

    如果您仍然遇到问题,请分享您的Lambda函数生成的示例JSON .

相关问题