Question:
I have created aws apigateway lambda integration for my proxy server. When i am making get request to the gateway, the request is successfully going through. The lambda function also executes successfully and writes response in outputstream with statusCode as 200. But apigateway always returns 502.
Snippet of handleRequest():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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)); |
Am i missing anything ?
Answer:
502 errors with Lambda usuaully indicate that you are using the Lambda proxy method and not generating the proper JSON response. Make sure your response adheres to the appropriate format.
If you are still having problems, please share a sample JSON generated by your Lambda function.