# AWS Lambda Java Events SDK Transformer Library
### About
Provides helper classes/methods to use alongside `aws-lambda-java-events` in order to transform Lambda input event model
objects into SDK-compatible output model objects
(eg. DynamodbEvent to a List of records writable back to DynamoDB through the AWS DynamoDB SDK for Java v1 or v2).
### Getting started
Add the following Apache Maven dependencies to your `pom.xml` file:
```xml
com.amazonaws
aws-lambda-java-events-sdk-transformer
3.1.0
com.amazonaws
aws-lambda-java-events
3.11.2
```
To use this library as a transformer to the AWS DynamoDB Java SDK v2, also add the following dependency to your `pom.xml` file:
```xml
software.amazon.awssdk
dynamodb
2.15.40
```
To use this library as a transformer to the AWS DynamoDB Java SDK v1, add the following dependency to your `pom.xml` file instead:
```xml
com.amazonaws
aws-java-sdk-dynamodb
1.11.914
```
### Example Usage
#### SDK v2
To convert a full `DynamodbEvent` object to an SDK v2 compatible `List`:
```java
import com.amazonaws.services.lambda.runtime.events.transformers.v2.DynamodbEventTransformer;
public class DDBEventProcessor implements RequestHandler {
public String handleRequest(DynamodbEvent ddbEvent, Context context) {
// Process input event
List convertedRecords = DynamodbEventTransformer.toRecordsV2(ddbEvent);
// Modify records as needed and write back to DynamoDB using the DynamoDB AWS SDK for Java 2.0
}
}
```
To convert a single `DynamodbEvent.DynamodbStreamRecord` object to an SDK v2 compatible `Record`:
```java
import com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbRecordTransformer;
public class MyClass {
public void myMethod(DynamodbEvent.DynamodbStreamRecord record) {
// ...
Record convertedRecord = DynamodbRecordTransformer.toRecordV2(record);
// ...
}
}
```
To convert a `StreamRecord` object originating from a `DynamodbEvent` to an SDK v2 compatible `StreamRecord`:
```java
import com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbStreamRecordTransformer;
public class MyClass {
public void myMethod(StreamRecord streamRecord) {
// ...
software.amazon.awssdk.services.dynamodb.model.StreamRecord convertedStreamRecord =
DynamodbStreamRecordTransformer.toStreamRecordV2(streamRecord);
// ...
}
}
```
To convert an `AttributeValue` object originating from a `DynamodbEvent` to an SDK v2 compatible `AttributeValue`:
```java
import com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbAttributeValueTransformer;
public class MyClass {
public void myMethod(AttributeValue attributeValue) {
// ...
software.amazon.awssdk.services.dynamodb.model.AttributeValue convertedAttributeValue =
DynamodbAttributeValueTransformer.toAttributeValueV2(attributeValue);
// ...
}
}
```
To convert an `Identity` object originating from a `DynamodbEvent` to an SDK v2 compatible `Identity`:
```java
import com.amazonaws.services.lambda.runtime.events.transformers.v2.dynamodb.DynamodbIdentityTransformer;
public class MyClass {
public void myMethod(Identity identity) {
// ...
software.amazon.awssdk.services.dynamodb.model.Identity convertedIdentity =
DynamodbIdentityTransformer.toIdentityV2(identity);
// ...
}
}
```
#### SDK v1
To convert a full `DynamodbEvent` object to an SDK v1 compatible `List`:
```java
import com.amazonaws.services.lambda.runtime.events.transformers.v1.DynamodbEventTransformer;
public class DDBEventProcessor implements RequestHandler {
public String handleRequest(DynamodbEvent ddbEvent, Context context) {
// Process input event
List convertedRecords = DynamodbEventTransformer.toRecordsV1(ddbEvent);
// Modify records as needed and write back to DynamoDB using the DynamoDB AWS SDK for Java 2.0
}
}
```
To convert a single `DynamodbEvent.DynamodbStreamRecord` object to an SDK v1 compatible `Record`:
```java
import com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbRecordTransformer;
public class MyClass {
public void myMethod(DynamodbEvent.DynamodbStreamRecord record) {
// ...
Record convertedRecord = DynamodbRecordTransformer.toRecordV1(record);
// ...
}
}
```
To convert a `StreamRecord` object originating from a `DynamodbEvent` to an SDK v1 compatible `StreamRecord`:
```java
import com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbStreamRecordTransformer;
public class MyClass {
public void myMethod(StreamRecord streamRecord) {
// ...
com.amazonaws.services.dynamodbv2.model.StreamRecord convertedStreamRecord =
DynamodbStreamRecordTransformer.toStreamRecordV1(streamRecord);
// ...
}
}
```
To convert an `AttributeValue` object originating from a `DynamodbEvent` to an SDK v1 compatible `AttributeValue`:
```java
import com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbAttributeValueTransformer;
public class MyClass {
public void myMethod(AttributeValue attributeValue) {
// ...
com.amazonaws.services.dynamodbv2.model.AttributeValue convertedAttributeValue =
DynamodbAttributeValueTransformer.toAttributeValueV1(attributeValue);
// ...
}
}
```
To convert an `Identity` object originating from a `DynamodbEvent` to an SDK v1 compatible `Identity`:
```java
import com.amazonaws.services.lambda.runtime.events.transformers.v1.dynamodb.DynamodbIdentityTransformer;
public class MyClass {
public void myMethod(Identity identity) {
// ...
com.amazonaws.services.dynamodbv2.model.Identity convertedIdentity =
DynamodbIdentityTransformer.toIdentityV1(identity);
// ...
}
}
```