From cadebd21cf85a0135cc30881d4c693abbd867701 Mon Sep 17 00:00:00 2001 From: msailes Date: Wed, 21 Oct 2020 13:21:44 +0100 Subject: [PATCH 1/4] feat: Event and Response to enable S3 Batch operations. --- .../lambda/runtime/events/S3BatchEvent.java | 41 +++++++++++++++ .../runtime/events/S3BatchResponse.java | 52 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchEvent.java create mode 100644 aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchResponse.java diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchEvent.java new file mode 100644 index 00000000..02cbb2c9 --- /dev/null +++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchEvent.java @@ -0,0 +1,41 @@ +package com.amazonaws.services.lambda.runtime.events; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder(setterPrefix = "with") +@NoArgsConstructor +@AllArgsConstructor +public class S3BatchEvent { + + private String invocationSchemaVersion; + private String invocationId; + private Job job; + private List tasks; + + @Data + @Builder(setterPrefix = "with") + @NoArgsConstructor + @AllArgsConstructor + public static class Job { + + private String id; + } + + @Data + @Builder(setterPrefix = "with") + @NoArgsConstructor + @AllArgsConstructor + public static class Task { + + private String taskId; + private String s3Key; + private String s3VersionId; + private String s3BucketArn; + } +} \ No newline at end of file diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchResponse.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchResponse.java new file mode 100644 index 00000000..c06347a0 --- /dev/null +++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchResponse.java @@ -0,0 +1,52 @@ +package com.amazonaws.services.lambda.runtime.events; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder(setterPrefix = "with") +@NoArgsConstructor +@AllArgsConstructor +public class S3BatchResponse { + + private String invocationSchemaVersion; + private String treatMissingKeysAs; + private String invocationId; + private List result; + + @Data + @Builder(setterPrefix = "with") + @NoArgsConstructor + @AllArgsConstructor + public static class Result { + + private String taskId; + private ResultCode resultCode; + private String resultString; + } + + public enum ResultCode { + + /** + * The task completed normally. If you requested a job completion report, + * the task's result string is included in the report. + */ + Succeeded, + /** + * The task suffered a temporary failure and will be redriven before the job + * completes. The result string is ignored. If this is the final redrive, + * the error message is included in the final report. + */ + TemporaryFailure, + /** + * The task suffered a permanent failure. If you requested a job-completion + * report, the task is marked as Failed and includes the error message + * string. Result strings from failed tasks are ignored. + */ + PermanentFailure + } +} \ No newline at end of file From 3c8b1edde053500710e169af7b043d750f67dc28 Mon Sep 17 00:00:00 2001 From: msailes Date: Wed, 21 Oct 2020 15:48:46 +0100 Subject: [PATCH 2/4] feat: Event and Response to enable S3 Batch operations. --- .../services/lambda/runtime/events/S3BatchEvent.java | 7 +++++++ .../services/lambda/runtime/events/S3BatchResponse.java | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchEvent.java index 02cbb2c9..a3e8d682 100644 --- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchEvent.java +++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchEvent.java @@ -7,6 +7,13 @@ import java.util.List; +/** + * Event to represent the payload which is sent to Lambda by S3 Batch to perform a custom + * action. + * + * https://docs.aws.amazon.com/AmazonS3/latest/dev/batch-ops-invoke-lambda.html + */ + @Data @Builder(setterPrefix = "with") @NoArgsConstructor diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchResponse.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchResponse.java index c06347a0..49b0d569 100644 --- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchResponse.java +++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchResponse.java @@ -7,6 +7,13 @@ import java.util.List; +/** + * Event to represent the response which should be returned as part of a S3 Batch custom + * action. + * + * https://docs.aws.amazon.com/AmazonS3/latest/dev/batch-ops-invoke-lambda.html + */ + @Data @Builder(setterPrefix = "with") @NoArgsConstructor From 9e99f90f733f9c654c1ecdac6a37ead4ceb9d278 Mon Sep 17 00:00:00 2001 From: msailes Date: Wed, 21 Oct 2020 16:43:44 +0100 Subject: [PATCH 3/4] typo --- .../services/lambda/runtime/events/S3BatchResponse.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchResponse.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchResponse.java index 49b0d569..fc1fdafb 100644 --- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchResponse.java +++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchResponse.java @@ -23,7 +23,7 @@ public class S3BatchResponse { private String invocationSchemaVersion; private String treatMissingKeysAs; private String invocationId; - private List result; + private List results; @Data @Builder(setterPrefix = "with") From ea1083face0414483ada1a59234bebb9bbab2a7f Mon Sep 17 00:00:00 2001 From: msailes Date: Thu, 22 Oct 2020 09:22:54 +0100 Subject: [PATCH 4/4] Added `fromS3BatchEvent(S3BatchEvent s3BatchEvent)` method Changed the type of treatMissingKeysAs from String to ResultCode --- .../services/lambda/runtime/events/S3BatchResponse.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchResponse.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchResponse.java index fc1fdafb..4fdd1273 100644 --- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchResponse.java +++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/S3BatchResponse.java @@ -21,7 +21,7 @@ public class S3BatchResponse { private String invocationSchemaVersion; - private String treatMissingKeysAs; + private ResultCode treatMissingKeysAs; private String invocationId; private List results; @@ -56,4 +56,10 @@ public enum ResultCode { */ PermanentFailure } + + public static S3BatchResponseBuilder fromS3BatchEvent(S3BatchEvent s3BatchEvent) { + return S3BatchResponse.builder() + .withInvocationId(s3BatchEvent.getInvocationId()) + .withInvocationSchemaVersion(s3BatchEvent.getInvocationSchemaVersion()); + } } \ No newline at end of file