Skip to content

Commit 3e71a17

Browse files
authored
Add SDK v1 transformers, move v2 transformers to v2 package, bump transformer lib to 3.0.0 (#195)
1 parent c6b416a commit 3e71a17

24 files changed

+937
-79
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ ___
4141
<dependency>
4242
<groupId>com.amazonaws</groupId>
4343
<artifactId>aws-lambda-java-events-sdk-transformer</artifactId>
44-
<version>2.0.8</version>
44+
<version>3.0.0</version>
4545
</dependency>
4646
<dependency>
4747
<groupId>com.amazonaws</groupId>
@@ -60,7 +60,7 @@ ___
6060
```groovy
6161
'com.amazonaws:aws-lambda-java-core:1.2.1'
6262
'com.amazonaws:aws-lambda-java-events:3.6.0'
63-
'com.amazonaws:aws-lambda-java-events-sdk-transformer:2.0.8'
63+
'com.amazonaws:aws-lambda-java-events-sdk-transformer:3.0.0'
6464
'com.amazonaws:aws-lambda-java-log4j2:1.2.0'
6565
'com.amazonaws:aws-lambda-java-runtime-interface-client:1.0.0'
6666
```
@@ -70,7 +70,7 @@ ___
7070
```clojure
7171
[com.amazonaws/aws-lambda-java-core "1.2.1"]
7272
[com.amazonaws/aws-lambda-java-events "3.6.0"]
73-
[com.amazonaws/aws-lambda-java-events-sdk-transformer "2.0.8"]
73+
[com.amazonaws/aws-lambda-java-events-sdk-transformer "3.0.0"]
7474
[com.amazonaws/aws-lambda-java-log4j2 "1.2.0"]
7575
[com.amazonaws/aws-lambda-java-runtime-interface-client "1.0.0"]
7676
```
@@ -80,7 +80,7 @@ ___
8080
```scala
8181
"com.amazonaws" % "aws-lambda-java-core" % "1.2.1"
8282
"com.amazonaws" % "aws-lambda-java-events" % "3.6.0"
83-
"com.amazonaws" % "aws-lambda-java-events-sdk-transformer" % "2.0.8"
83+
"com.amazonaws" % "aws-lambda-java-events-sdk-transformer" % "3.0.0"
8484
"com.amazonaws" % "aws-lambda-java-log4j2" % "1.2.0"
8585
"com.amazonaws" % "aws-lambda-java-runtime-interface-client" % "1.0.0"
8686
```

aws-lambda-java-events-sdk-transformer/README.md

Lines changed: 135 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
Provides helper classes/methods to use alongside `aws-lambda-java-events` in order to transform Lambda input event model
66
objects into SDK-compatible output model objects
7-
(eg. DynamodbEvent to a List of records writable back to DynamoDB through the AWS DynamoDB SDK v2).
7+
(eg. DynamodbEvent to a List of records writable back to DynamoDB through the AWS DynamoDB SDK for Java v1 or v2).
88

99

1010
### Getting started
@@ -16,7 +16,7 @@ Add the following Apache Maven dependencies to your `pom.xml` file:
1616
<dependency>
1717
<groupId>com.amazonaws</groupId>
1818
<artifactId>aws-lambda-java-events-sdk-transformer</artifactId>
19-
<version>2.0.8</version>
19+
<version>3.0.0</version>
2020
</dependency>
2121
<dependency>
2222
<groupId>com.amazonaws</groupId>
@@ -33,83 +33,182 @@ To use this library as a transformer to the AWS DynamoDB Java SDK v2, also add t
3333
<dependency>
3434
<groupId>software.amazon.awssdk</groupId>
3535
<artifactId>dynamodb</artifactId>
36-
<version>2.13.18</version>
36+
<version>2.15.40</version>
37+
</dependency>
38+
</dependencies>
39+
```
40+
41+
To use this library as a transformer to the AWS DynamoDB Java SDK v1, add the following dependency to your `pom.xml` file instead:
42+
43+
```xml
44+
<dependencies>
45+
<dependency>
46+
<groupId>com.amazonaws</groupId>
47+
<artifactId>aws-java-sdk-dynamodb</artifactId>
48+
<version>1.11.914</version>
3749
</dependency>
3850
</dependencies>
3951
```
4052

4153

4254
### Example Usage
4355

56+
#### SDK v2
57+
4458
To convert a full `DynamodbEvent` object to an SDK v2 compatible `List<Record>`:
59+
4560
```java
46-
import com.amazonaws.services.lambda.runtime.events.transformers.DynamodbEventTransformer;
61+
import com.amazonaws.services.lambda.runtime.events.transformers.v2.DynamodbEventTransformer;
4762

4863
public class DDBEventProcessor implements RequestHandler<DynamodbEvent, String> {
4964

50-
public String handleRequest(DynamodbEvent ddbEvent, Context context) {
51-
// Process input event
52-
List<Record> convertedRecords = DynamodbEventTransformer.toRecordsV2(ddbEvent);
53-
// Modify records as needed and write back to DynamoDB using the DynamoDB AWS SDK for Java 2.0
54-
}
65+
public String handleRequest(DynamodbEvent ddbEvent, Context context) {
66+
// Process input event
67+
List<Record> convertedRecords = DynamodbEventTransformer.toRecordsV2(ddbEvent);
68+
// Modify records as needed and write back to DynamoDB using the DynamoDB AWS SDK for Java 2.0
69+
}
5570
}
5671
```
5772

5873
To convert a single `DynamodbEvent.DynamodbStreamRecord` object to an SDK v2 compatible `Record`:
74+
5975
```java
60-
import com.amazonaws.services.lambda.runtime.events.transformers.dynamodb.DynamodbRecordTransformer;
76+
import com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbRecordTransformer;
6177

6278
public class MyClass {
6379

64-
public void myMethod(DynamodbEvent.DynamodbStreamRecord record) {
65-
// ...
66-
Record convertedRecord = DynamodbRecordTransformer.toRecordV2(record);
67-
// ...
68-
}
80+
public void myMethod(DynamodbEvent.DynamodbStreamRecord record) {
81+
// ...
82+
Record convertedRecord = DynamodbRecordTransformer.toRecordV2(record);
83+
// ...
84+
}
6985
}
7086
```
7187

7288
To convert a `StreamRecord` object originating from a `DynamodbEvent` to an SDK v2 compatible `StreamRecord`:
89+
7390
```java
74-
import com.amazonaws.services.lambda.runtime.events.transformers.dynamodb.DynamodbStreamRecordTransformer;
91+
import com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbStreamRecordTransformer;
7592

7693
public class MyClass {
7794

78-
public void myMethod(StreamRecord streamRecord) {
79-
// ...
80-
software.amazon.awssdk.services.dynamodb.model.StreamRecord convertedStreamRecord =
81-
DynamodbStreamRecordTransformer.toStreamRecordV2(streamRecord);
82-
// ...
83-
}
95+
public void myMethod(StreamRecord streamRecord) {
96+
// ...
97+
software.amazon.awssdk.services.dynamodb.model.StreamRecord convertedStreamRecord =
98+
DynamodbStreamRecordTransformer.toStreamRecordV2(streamRecord);
99+
// ...
100+
}
84101
}
85102
```
86103

87104
To convert an `AttributeValue` object originating from a `DynamodbEvent` to an SDK v2 compatible `AttributeValue`:
105+
88106
```java
89-
import com.amazonaws.services.lambda.runtime.events.transformers.dynamodb.DynamodbAttributeValueTransformer;
107+
import com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformer;
90108

91109
public class MyClass {
92110

93-
public void myMethod(AttributeValue attributeValue) {
94-
// ...
95-
software.amazon.awssdk.services.dynamodb.model.AttributeValue convertedAttributeValue =
96-
DynamodbAttributeValueTransformer.toAttributeValueV2(attributeValue);
97-
// ...
98-
}
111+
public void myMethod(AttributeValue attributeValue) {
112+
// ...
113+
software.amazon.awssdk.services.dynamodb.model.AttributeValue convertedAttributeValue =
114+
DynamodbAttributeValueTransformer.toAttributeValueV2(attributeValue);
115+
// ...
116+
}
99117
}
100118
```
101119

102120
To convert an `Identity` object originating from a `DynamodbEvent` to an SDK v2 compatible `Identity`:
121+
122+
```java
123+
import com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbIdentityTransformer;
124+
125+
public class MyClass {
126+
127+
public void myMethod(Identity identity) {
128+
// ...
129+
software.amazon.awssdk.services.dynamodb.model.Identity convertedIdentity =
130+
DynamodbIdentityTransformer.toIdentityV2(identity);
131+
// ...
132+
}
133+
}
134+
```
135+
136+
#### SDK v1
137+
138+
To convert a full `DynamodbEvent` object to an SDK v1 compatible `List<Record>`:
139+
140+
```java
141+
import com.amazonaws.services.lambda.runtime.events.transformers.v1.DynamodbEventTransformer;
142+
143+
public class DDBEventProcessor implements RequestHandler<DynamodbEvent, String> {
144+
145+
public String handleRequest(DynamodbEvent ddbEvent, Context context) {
146+
// Process input event
147+
List<Record> convertedRecords = DynamodbEventTransformer.toRecordsV1(ddbEvent);
148+
// Modify records as needed and write back to DynamoDB using the DynamoDB AWS SDK for Java 2.0
149+
}
150+
}
151+
```
152+
153+
To convert a single `DynamodbEvent.DynamodbStreamRecord` object to an SDK v1 compatible `Record`:
154+
155+
```java
156+
import com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbRecordTransformer;
157+
158+
public class MyClass {
159+
160+
public void myMethod(DynamodbEvent.DynamodbStreamRecord record) {
161+
// ...
162+
Record convertedRecord = DynamodbRecordTransformer.toRecordV1(record);
163+
// ...
164+
}
165+
}
166+
```
167+
168+
To convert a `StreamRecord` object originating from a `DynamodbEvent` to an SDK v1 compatible `StreamRecord`:
169+
170+
```java
171+
import com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbStreamRecordTransformer;
172+
173+
public class MyClass {
174+
175+
public void myMethod(StreamRecord streamRecord) {
176+
// ...
177+
com.amazonaws.services.dynamodbv2.model.StreamRecord convertedStreamRecord =
178+
DynamodbStreamRecordTransformer.toStreamRecordV1(streamRecord);
179+
// ...
180+
}
181+
}
182+
```
183+
184+
To convert an `AttributeValue` object originating from a `DynamodbEvent` to an SDK v1 compatible `AttributeValue`:
185+
186+
```java
187+
import com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformer;
188+
189+
public class MyClass {
190+
191+
public void myMethod(AttributeValue attributeValue) {
192+
// ...
193+
com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValue =
194+
DynamodbAttributeValueTransformer.toAttributeValueV1(attributeValue);
195+
// ...
196+
}
197+
}
198+
```
199+
200+
To convert an `Identity` object originating from a `DynamodbEvent` to an SDK v1 compatible `Identity`:
201+
103202
```java
104-
import com.amazonaws.services.lambda.runtime.events.transformers.dynamodb.DynamodbIdentityTransformer;
203+
import com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbIdentityTransformer;
105204

106205
public class MyClass {
107206

108-
public void myMethod(Identity identity) {
109-
// ...
110-
software.amazon.awssdk.services.dynamodb.model.Identity convertedIdentity =
111-
DynamodbIdentityTransformer.toIdentityV2(identity);
112-
// ...
113-
}
207+
public void myMethod(Identity identity) {
208+
// ...
209+
com.amazonaws.services.dynamodbv2.model.Identity convertedIdentity =
210+
DynamodbIdentityTransformer.toIdentityV1(identity);
211+
// ...
212+
}
114213
}
115214
```

aws-lambda-java-events-sdk-transformer/RELEASE.CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
### Upcoming
2+
`3.0.0`:
3+
- Added AWS SDK V1 transformers for `DynamodbEvent` in `aws-lambda-java-events` versions `3.0.0` and up
4+
- Moved existing SDK v2 transformers into `v2` package (from `com.amazonaws.services.lambda.runtime.events.transformers` to `com.amazonaws.services.lambda.runtime.events.transformers.v2`)
5+
- Bumped `software.amazon.awssdk:dynamodb` to version `2.15.40`
6+
17
### November 06, 2020
28
`2.0.8`:
39
- Bumped `aws-lambda-java-events` to version `3.6.0`

aws-lambda-java-events-sdk-transformer/pom.xml

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55

66
<groupId>com.amazonaws</groupId>
77
<artifactId>aws-lambda-java-events-sdk-transformer</artifactId>
8-
<version>2.0.8</version>
8+
<version>3.0.0</version>
99
<packaging>jar</packaging>
1010

1111
<name>AWS Lambda Java Events SDK Transformer Library</name>
1212
<description>
1313
Provides helper classes/methods to use alongside aws-lambda-java-events in order to transform Lambda input event model
1414
objects into SDK-compatible output model objects (eg. DynamodbEvent to a List of records writable back to DynamoDB
15-
through the AWS DynamoDB SDK v2)
15+
through the AWS DynamoDB SDK for Java v1 or v2)
1616
</description>
1717
<url>https://aws.amazon.com/lambda/</url>
1818
<licenses>
@@ -36,6 +36,8 @@
3636
<properties>
3737
<maven.compiler.source>1.8</maven.compiler.source>
3838
<maven.compiler.target>1.8</maven.compiler.target>
39+
<sdk.v1.version>1.11.914</sdk.v1.version>
40+
<sdk.v2.version>2.15.40</sdk.v2.version>
3941
</properties>
4042

4143
<distributionManagement>
@@ -49,7 +51,13 @@
4951
<dependency>
5052
<groupId>software.amazon.awssdk</groupId>
5153
<artifactId>dynamodb</artifactId>
52-
<version>2.13.18</version>
54+
<version>${sdk.v2.version}</version>
55+
<scope>provided</scope>
56+
</dependency>
57+
<dependency>
58+
<groupId>com.amazonaws</groupId>
59+
<artifactId>aws-java-sdk-dynamodb</artifactId>
60+
<version>${sdk.v1.version}</version>
5361
<scope>provided</scope>
5462
</dependency>
5563
<dependency>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.amazonaws.services.lambda.runtime.events.transformers.v1;
2+
3+
import com.amazonaws.services.dynamodbv2.model.Record;
4+
import com.amazonaws.services.lambda.runtime.events.DynamodbEvent;
5+
import com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbRecordTransformer;
6+
7+
import java.util.List;
8+
import java.util.Objects;
9+
import java.util.stream.Collectors;
10+
11+
public class DynamodbEventTransformer {
12+
13+
public static List<Record> toRecordsV1(final DynamodbEvent dynamodbEvent) {
14+
return dynamodbEvent
15+
.getRecords()
16+
.stream()
17+
.filter(record -> !Objects.isNull(record))
18+
.map(DynamodbRecordTransformer::toRecordV1)
19+
.collect(Collectors.toList());
20+
}
21+
}

0 commit comments

Comments
 (0)