diff --git a/aws/pom.xml b/aws/pom.xml
index f3ae672a2f..4ea6b8786c 100644
--- a/aws/pom.xml
+++ b/aws/pom.xml
@@ -14,11 +14,23 @@
1.1.0
+
+ com.amazonaws
+ aws-lambda-java-events
+ 1.3.0
+
+
commons-io
commons-io
2.5
+
+
+ com.google.code.gson
+ gson
+ 2.8.0
+
@@ -26,7 +38,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 2.3
+ 3.0.0
false
@@ -41,4 +53,14 @@
+
+
+ artifactory-isg-release
+ https://repository.deere.com/artifactory/isg-release
+
+
+ axiom-nexus
+ http://isgnexus.deere.com/nexus/content/groups/public
+
+
\ No newline at end of file
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..47d3569d27
--- /dev/null
+++ b/aws/src/main/java/com/baeldung/lambda/dynamodb/SavePersonHandler.java
@@ -0,0 +1,57 @@
+/**
+ * "Unpublished Work © 2017 Deere & Company. All Worldwide Rights Reserved. THIS MATERIAL IS THE PROPERTY OF DEERE &
+ * COMPANY. ALL USE, ALTERATIONS, DISCLOSURE, DISSEMINATION AND/OR REPRODUCTION NOT SPECIFICALLY AUTHORIZED BY DEERE &
+ * COMPANY IS PROHIBITED."
+ */
+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 final String DYNAMODB_TABLE_NAME = "Person";
+ private final Regions REGION = Regions.US_WEST_2;
+
+ public PersonResponse handleRequest(PersonRequest personRequest, Context context) {
+ context.getLogger().log("personRequest: " + personRequest);
+ this.initDynamoDbClient();
+
+ persistData(personRequest);
+
+ PersonResponse personResponse = new PersonResponse();
+ personResponse.setMessage("Saved Successfully!!!");
+ context.getLogger().log("personResponse: " + personResponse);
+ 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() {
+ final 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..1f699d7ee3
--- /dev/null
+++ b/aws/src/main/java/com/baeldung/lambda/dynamodb/bean/PersonRequest.java
@@ -0,0 +1,71 @@
+/**
+ * "Unpublished Work © 2017 Deere & Company. All Worldwide Rights Reserved. THIS MATERIAL IS THE PROPERTY OF DEERE &
+ * COMPANY. ALL USE, ALTERATIONS, DISCLOSURE, DISSEMINATION AND/OR REPRODUCTION NOT SPECIFICALLY AUTHORIZED BY DEERE &
+ * COMPANY IS PROHIBITED."
+ */
+package com.baeldung.lambda.dynamodb.bean;
+
+import com.google.gson.Gson;
+
+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 Gson();
+ 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..19724adbfa
--- /dev/null
+++ b/aws/src/main/java/com/baeldung/lambda/dynamodb/bean/PersonResponse.java
@@ -0,0 +1,25 @@
+/**
+ * "Unpublished Work © 2017 Deere & Company. All Worldwide Rights Reserved. THIS MATERIAL IS THE PROPERTY OF DEERE &
+ * COMPANY. ALL USE, ALTERATIONS, DISCLOSURE, DISSEMINATION AND/OR REPRODUCTION NOT SPECIFICALLY AUTHORIZED BY DEERE &
+ * COMPANY IS PROHIBITED."
+ */
+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;
+ }
+}