import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.LambdaLogger; import java.util.HashMap; import java.util.Map; public class LambdaAPIGateway { public Map<String, Object> handleRequest(Map<String, Object> request, Context context) { LambdaLogger logger = context.getLogger(); logger.log("Function version: " + context.getFunctionVersion() + "; "); logger.log("Event: " + request.toString()); String bodyAsJson = "{\"data\":\"ok\"}"; Map<String, Object> result = Respond(200, bodyAsJson, context); return result; } public static Map<String, Object> Respond(int httpStatus, String bodyAsJson, Context context) { Map<String, Object> retval = new HashMap<>(); /** Response MUST be in a specific format with "headers"; "statusCode" and "body" ONLY Example: { "headers": {"Content-Type":"application/json"}, "body":"...", "statusCode":200 } See http://amzn.to/2lY4oQB (under the heading Output Format of a Lambda Function for Proxy Integration) */ Map<String, Object> headers = new HashMap<>(); headers.put("Content-Type", "application/json"); headers.put("x-request-id", context.getAwsRequestId()); retval.put("headers", headers); retval.put("statusCode", httpStatus); retval.put("body", bodyAsJson); return retval; } }
The AWS documentation provides a Java example which uses inputStream and outputStream and takes a lot more code: http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api-as-simple-proxy-for-lambda.html#api-gateway-proxy-integration-lambda-function-java
I like this version better because is simpler and shorter.
More comprehensive example here:
https://github.com/sylnsr/boilerplate-code/blob/master/java/aws/LambdaAPIGateway.java
No comments:
Post a Comment