From f2e35ad4a9b5fc590f37515bdcc9657846459986 Mon Sep 17 00:00:00 2001 From: Mark Sailes Date: Fri, 15 May 2020 21:13:48 +0100 Subject: [PATCH 1/3] Classes to represent the request and response events for Application Load Balancer integration. --- aws-lambda-java-events/pom.xml | 6 +++ .../ApplicationLoadBalancerRequestEvent.java | 45 +++++++++++++++++++ .../ApplicationLoadBalancerResponseEvent.java | 27 +++++++++++ 3 files changed, 78 insertions(+) create mode 100644 aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ApplicationLoadBalancerRequestEvent.java create mode 100644 aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ApplicationLoadBalancerResponseEvent.java diff --git a/aws-lambda-java-events/pom.xml b/aws-lambda-java-events/pom.xml index 5f9e15eb..899fe4b2 100644 --- a/aws-lambda-java-events/pom.xml +++ b/aws-lambda-java-events/pom.xml @@ -67,6 +67,12 @@ 1.11.163 provided + + org.projectlombok + lombok + 1.18.12 + provided + diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ApplicationLoadBalancerRequestEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ApplicationLoadBalancerRequestEvent.java new file mode 100644 index 00000000..266ef8f9 --- /dev/null +++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ApplicationLoadBalancerRequestEvent.java @@ -0,0 +1,45 @@ +package com.amazonaws.services.lambda.runtime.events; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Map; + +/** + * Class to represent the request event from Application Load Balancer. + * + * @see Using AWS Lambda with an Application Load Balancer + * + * @author msailes + */ + +@NoArgsConstructor +@Data +public class ApplicationLoadBalancerRequestEvent implements Serializable, Cloneable { + + @NoArgsConstructor + @Data + public class Elb implements Serializable, Cloneable { + + private String targetGroupArn; + + } + + @NoArgsConstructor + @Data + public class RequestContext implements Serializable, Cloneable { + + private Elb elb; + + } + + private RequestContext requestContext; + private String httpMethod; + private String path; + private Map queryStringParameters; + private Map headers; + private String body; + private boolean isBase64Encoded; + +} diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ApplicationLoadBalancerResponseEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ApplicationLoadBalancerResponseEvent.java new file mode 100644 index 00000000..4a7fe341 --- /dev/null +++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ApplicationLoadBalancerResponseEvent.java @@ -0,0 +1,27 @@ +package com.amazonaws.services.lambda.runtime.events; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Map; + +/** + * Class to represent the response event to Application Load Balancer. + * + * @see Using AWS Lambda with an Application Load Balancer + * + * @author msailes + */ + +@NoArgsConstructor +@Data +public class ApplicationLoadBalancerResponseEvent implements Serializable, Cloneable { + + private int statusCode; + private String statusDescription; + private boolean isBase64Encoded; + private Map headers; + private String body; + +} From f5621e0c7b625f82a3b727afbabe1b0f7dab083f Mon Sep 17 00:00:00 2001 From: Mark Sailes Date: Mon, 18 May 2020 10:55:43 +0100 Subject: [PATCH 2/3] Updated README.md --- aws-lambda-java-events/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/aws-lambda-java-events/README.md b/aws-lambda-java-events/README.md index f7c7db8b..ce3f4a05 100644 --- a/aws-lambda-java-events/README.md +++ b/aws-lambda-java-events/README.md @@ -5,6 +5,8 @@ * `APIGatewayProxyResponseEvent` * `APIGatewayV2ProxyRequestEvent` * `APIGatewayV2ProxyResponseEvent` +* `ApplicationLoadBalancerRequestEvent` +* `ApplicationLoadBalancerResponseEvent` * `CloudFrontEvent` * `CloudWatchLogsEvent` * `CodeCommitEvent` From 7b156464f946625f659ea8f11ac8ee21ad4960d3 Mon Sep 17 00:00:00 2001 From: Mark Sailes Date: Tue, 19 May 2020 11:29:42 +0100 Subject: [PATCH 3/3] Feedback updates. Inner classes are static. Added support for multiValueHeaders. --- .../runtime/events/ApplicationLoadBalancerRequestEvent.java | 6 ++++-- .../events/ApplicationLoadBalancerResponseEvent.java | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ApplicationLoadBalancerRequestEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ApplicationLoadBalancerRequestEvent.java index 266ef8f9..29d01f78 100644 --- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ApplicationLoadBalancerRequestEvent.java +++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ApplicationLoadBalancerRequestEvent.java @@ -4,6 +4,7 @@ import lombok.NoArgsConstructor; import java.io.Serializable; +import java.util.List; import java.util.Map; /** @@ -20,7 +21,7 @@ public class ApplicationLoadBalancerRequestEvent implements Serializable, Clonea @NoArgsConstructor @Data - public class Elb implements Serializable, Cloneable { + public static class Elb implements Serializable, Cloneable { private String targetGroupArn; @@ -28,7 +29,7 @@ public class Elb implements Serializable, Cloneable { @NoArgsConstructor @Data - public class RequestContext implements Serializable, Cloneable { + public static class RequestContext implements Serializable, Cloneable { private Elb elb; @@ -39,6 +40,7 @@ public class RequestContext implements Serializable, Cloneable { private String path; private Map queryStringParameters; private Map headers; + private Map> multiValueHeaders; private String body; private boolean isBase64Encoded; diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ApplicationLoadBalancerResponseEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ApplicationLoadBalancerResponseEvent.java index 4a7fe341..135de143 100644 --- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ApplicationLoadBalancerResponseEvent.java +++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ApplicationLoadBalancerResponseEvent.java @@ -4,6 +4,7 @@ import lombok.NoArgsConstructor; import java.io.Serializable; +import java.util.List; import java.util.Map; /** @@ -22,6 +23,7 @@ public class ApplicationLoadBalancerResponseEvent implements Serializable, Clone private String statusDescription; private boolean isBase64Encoded; private Map headers; + private Map> multiValueHeaders; private String body; }