diff --git a/aws/pom.xml b/aws/pom.xml
index f3ae672a2f..681b76cfd4 100644
--- a/aws/pom.xml
+++ b/aws/pom.xml
@@ -7,17 +7,36 @@
jar
aws
+
+ 2.5
+ 1.3.0
+ 1.1.0
+ 2.8.0
+
+
com.amazonaws
aws-lambda-java-core
- 1.1.0
+ ${aws-lambda-java-core.version}
+
+
+
+ com.amazonaws
+ aws-lambda-java-events
+ ${aws-lambda-java-events.version}
commons-io
commons-io
- 2.5
+ ${commons-io.version}
+
+
+
+ com.google.code.gson
+ gson
+ ${gson.version}
@@ -26,7 +45,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 2.3
+ 3.0.0
false
diff --git a/aws/src/main/java/com/baeldung/lambda/dynamodb/SavePersonHandler.java b/aws/src/main/java/com/baeldung/lambda/dynamodb/SavePersonHandler.java
new file mode 100644
index 0000000000..625da62efd
--- /dev/null
+++ b/aws/src/main/java/com/baeldung/lambda/dynamodb/SavePersonHandler.java
@@ -0,0 +1,49 @@
+package com.baeldung.lambda.dynamodb;
+
+import com.amazonaws.regions.Region;
+import com.amazonaws.regions.Regions;
+import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
+import com.amazonaws.services.dynamodbv2.document.DynamoDB;
+import com.amazonaws.services.dynamodbv2.document.Item;
+import com.amazonaws.services.dynamodbv2.document.PutItemOutcome;
+import com.amazonaws.services.dynamodbv2.document.spec.PutItemSpec;
+import com.amazonaws.services.dynamodbv2.model.ConditionalCheckFailedException;
+import com.amazonaws.services.lambda.runtime.Context;
+import com.amazonaws.services.lambda.runtime.RequestHandler;
+import com.baeldung.lambda.dynamodb.bean.PersonRequest;
+import com.baeldung.lambda.dynamodb.bean.PersonResponse;
+
+public class SavePersonHandler implements RequestHandler {
+
+ private DynamoDB dynamoDb;
+
+ private String DYNAMODB_TABLE_NAME = "Person";
+ private Regions REGION = Regions.US_WEST_2;
+
+ public PersonResponse handleRequest(PersonRequest personRequest, Context context) {
+ this.initDynamoDbClient();
+
+ persistData(personRequest);
+
+ PersonResponse personResponse = new PersonResponse();
+ personResponse.setMessage("Saved Successfully!!!");
+ return personResponse;
+ }
+
+ private PutItemOutcome persistData(PersonRequest personRequest) throws ConditionalCheckFailedException {
+ return this.dynamoDb.getTable(DYNAMODB_TABLE_NAME)
+ .putItem(
+ new PutItemSpec().withItem(new Item()
+ .withNumber("id", personRequest.getId())
+ .withString("firstName", personRequest.getFirstName())
+ .withString("lastName", personRequest.getLastName())
+ .withNumber("age", personRequest.getAge())
+ .withString("address", personRequest.getAddress())));
+ }
+
+ private void initDynamoDbClient() {
+ AmazonDynamoDBClient client = new AmazonDynamoDBClient();
+ client.setRegion(Region.getRegion(REGION));
+ this.dynamoDb = new DynamoDB(client);
+ }
+}
diff --git a/aws/src/main/java/com/baeldung/lambda/dynamodb/bean/PersonRequest.java b/aws/src/main/java/com/baeldung/lambda/dynamodb/bean/PersonRequest.java
new file mode 100644
index 0000000000..0c0706e676
--- /dev/null
+++ b/aws/src/main/java/com/baeldung/lambda/dynamodb/bean/PersonRequest.java
@@ -0,0 +1,67 @@
+package com.baeldung.lambda.dynamodb.bean;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+public class PersonRequest {
+ private int id;
+ private String firstName;
+ private String lastName;
+ private int age;
+ private String address;
+
+ public static void main(String[] args) {
+ PersonRequest personRequest = new PersonRequest();
+ personRequest.setId(1);
+ personRequest.setFirstName("John");
+ personRequest.setLastName("Doe");
+ personRequest.setAge(30);
+ personRequest.setAddress("United States");
+ System.out.println(personRequest);
+ }
+
+ public String toString() {
+ final Gson gson = new GsonBuilder().setPrettyPrinting().create();
+ return gson.toJson(this);
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+}
diff --git a/aws/src/main/java/com/baeldung/lambda/dynamodb/bean/PersonResponse.java b/aws/src/main/java/com/baeldung/lambda/dynamodb/bean/PersonResponse.java
new file mode 100644
index 0000000000..a61294ddea
--- /dev/null
+++ b/aws/src/main/java/com/baeldung/lambda/dynamodb/bean/PersonResponse.java
@@ -0,0 +1,20 @@
+package com.baeldung.lambda.dynamodb.bean;
+
+import com.google.gson.Gson;
+
+public class PersonResponse {
+ private String message;
+
+ public String toString() {
+ final Gson gson = new Gson();
+ return gson.toJson(this);
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+}