diff --git a/README.md b/README.md
index b02865ca1258..6193a57ad3bc 100644
--- a/README.md
+++ b/README.md
@@ -16,6 +16,7 @@ artifact source.
* [Sample Code](#sample-code)
* [API Docs][docs-api]
* [Developer Guide][docs-guide] ([source][docs-guide-source])
+* [Maven Archetypes](archetypes/README.md)
* [Issues][sdk-issues]
* [SDK Blog][blog]
* [Giving Feedback](#giving-feedback)
diff --git a/archetypes/README.md b/archetypes/README.md
new file mode 100755
index 000000000000..70980eb12890
--- /dev/null
+++ b/archetypes/README.md
@@ -0,0 +1,9 @@
+# Maven Archetypes for AWS SDK for Java 2.x
+
+## Description
+This module contains maven archetypes for AWS Java SDK 2.x.
+
+## Archetypes
+
+- [archetype-lambda](archetype-lambda/README.md) - a lambda function template using AWS Java SDK 2.x
+
diff --git a/archetypes/archetype-lambda/README.md b/archetypes/archetype-lambda/README.md
new file mode 100755
index 000000000000..1992b020ddfa
--- /dev/null
+++ b/archetypes/archetype-lambda/README.md
@@ -0,0 +1,65 @@
+# Maven Archetype for lambda function using AWS SDK for Java 2.x
+
+## Description
+This is an Apache Maven Archetype to create a lambda function template using [AWS Java SDK 2.x][aws-java-sdk-v2]. The generated template
+has the optimized configurations and follows the best practices to reduce start up time.
+
+## Usage
+
+You can use `mvn archetype:generate` to generate a project using this archetype. See [maven archetype usage guidance][maven-archetype-usage] for more information.
+
+- Interactive mode
+
+```
+mvn archetype:generate \
+ -DarchetypeGroupId=software.amazon.awssdk \
+ -DarchetypeArtifactId=archetype-lambda \
+ -DarchetypeVersion=2.x\
+```
+
+- Batch mode
+
+```
+mvn archetype:generate \
+ -DarchetypeGroupId=software.amazon.awssdk \
+ -DarchetypeArtifactId=archetype-lambda \
+ -DarchetypeVersion=2.x\
+ -DgroupId=com.test \
+ -DartifactId=sample-project \
+ -Dservice=s3 \
+ -Dregion=us-west-2 \
+ -DinteractiveMode=false \
+```
+
+### Parameters
+
+Parameter Name | Default Value | Description
+---|---|---
+`service` (required) | n/a | Specifies the service client to be used in the lambda function, eg: s3, dynamodb. You can find available services [here][java-sdk-v2-services].
+`region` (required) | n/a | Specifies the region to be set for the SDK client in the application
+`groupId`(required) | n/a | Specifies the group ID of the project
+`artifactId`(required) | n/a | Specifies the artifact ID of the project
+`httpClient` | url-connection-client | Specifies the http client to be used by the SDK client. Available options are `url-connection-client` (sync), `apache-client` (sync), `netty-nio-client` (async). See [http clients][sdk-http-clients]
+`handlerClassName` | `"App"`| Specifies the class name of the handler, which will be used as the lambda function name. It should be camel case.
+`javaSdkVersion` | Same version as the archetype version | Specifies the version of the AWS Java SDK 2.x to be used
+`version` | 1.0-SNAPSHOT | Specifies the version of the project
+`package` | ${groupId} | Specifies the package name for the classes
+
+### Deployment
+
+To deploy the lambda function, you can use [SAM CLI][sam-cli]. The generated project contains a default [SAM template][sam-template] file `template.yaml` where you can
+configure different properties of your lambda function such as memory size and timeout.
+
+```
+sam deploy --guided
+```
+
+Please refer to [deploying lambda apps][deploying-lambda-apps] for more info.
+
+[aws-java-sdk-v2]: https://github.com/aws/aws-sdk-java-v2
+[java-sdk-v2-services]: https://github.com/aws/aws-sdk-java-v2/tree/master/services
+[sdk-http-clients]: https://github.com/aws/aws-sdk-java-v2/tree/master/http-clients
+[deploying-lambda-apps]: https://docs.aws.amazon.com/lambda/latest/dg/deploying-lambda-apps.html
+[sam-cli]:https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-getting-started.html
+[maven-archetype-usage]: https://maven.apache.org/archetype/maven-archetype-plugin/usage.html
+[sam-template]: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html
diff --git a/archetypes/archetype-lambda/pom.xml b/archetypes/archetype-lambda/pom.xml
new file mode 100644
index 000000000000..57a717fd7e67
--- /dev/null
+++ b/archetypes/archetype-lambda/pom.xml
@@ -0,0 +1,122 @@
+
+
+
+
+
+ archetypes
+ software.amazon.awssdk
+ 2.11.4-SNAPSHOT
+
+ 4.0.0
+ archetype-lambda
+ maven-archetype
+ AWS Java SDK :: Archetype Lambda
+
+ The AWS SDK for Java - Maven archetype for Java lambda function using AWS Java SDK 2.x
+
+
+
+ 3.1.2
+ 1.6.0
+
+
+
+
+
+ software.amazon.awssdk
+ aws-sdk-java
+ ${awsjavasdk.version}
+ test
+
+
+
+
+
+
+ src/main/resources
+ true
+
+ META-INF/maven/archetype-metadata.xml
+
+
+
+ src/main/resources
+ false
+
+ META-INF/maven/archetype-metadata.xml
+
+
+
+
+
+ org.apache.maven.archetype
+ archetype-packaging
+ ${maven.archetype.version}
+
+
+
+
+
+ exec-maven-plugin
+ org.codehaus.mojo
+ ${exec-maven-plugin.version}
+
+
+ map-service-to-client-prefix
+ generate-resources
+
+ exec
+
+
+ ${basedir}/src/main/resources/map-service-to-client-prefix
+
+
+
+
+
+ maven-archetype-plugin
+ ${maven.archetype.version}
+
+ true
+ true
+ ${skip.unit.tests}
+
+
+
+ integration-test
+ verify
+
+ integration-test
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+ ${maven-dependency-plugin.version}
+
+ true
+
+
+
+
+
\ No newline at end of file
diff --git a/archetypes/archetype-lambda/src/main/resources/META-INF/maven/archetype-metadata.xml b/archetypes/archetype-lambda/src/main/resources/META-INF/maven/archetype-metadata.xml
new file mode 100644
index 000000000000..cae4983caaf1
--- /dev/null
+++ b/archetypes/archetype-lambda/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -0,0 +1,49 @@
+
+
+
+
+ src/main/java
+
+ **/*.java
+
+
+
+ src/test/java
+
+ **/*.java
+
+
+
+
+
+ .gitignore
+ template.yaml
+ README.md
+
+
+
+
+
+ App
+
+
+ ${project.version}
+ \d+\.\d+.\d+
+
+
+
+
+ url-connection-client
+ (url-connection-client|apache-client|netty-nio-client)
+
+
+ ^\w+-(\w+-)+\d+$
+
+
+
+ ${netty-open-ssl-version}
+
+
+
diff --git a/archetypes/archetype-lambda/src/main/resources/archetype-resources/.gitignore b/archetypes/archetype-lambda/src/main/resources/archetype-resources/.gitignore
new file mode 100644
index 000000000000..a500caff54ac
--- /dev/null
+++ b/archetypes/archetype-lambda/src/main/resources/archetype-resources/.gitignore
@@ -0,0 +1,17 @@
+# Eclipse
+.classpath
+.project
+.settings/
+
+# Intellij
+.idea/
+*.iml
+*.iws
+
+# Mac
+.DS_Store
+
+# Maven
+target/
+
+**/dependency-reduced-pom.xml
diff --git a/archetypes/archetype-lambda/src/main/resources/archetype-resources/README.md b/archetypes/archetype-lambda/src/main/resources/archetype-resources/README.md
new file mode 100644
index 000000000000..f8effbaa17ad
--- /dev/null
+++ b/archetypes/archetype-lambda/src/main/resources/archetype-resources/README.md
@@ -0,0 +1,45 @@
+#[[#]]# ${handlerClassName}
+
+This project contains an AWS Lambda maven application with [AWS Java SDK 2.x](https://github.com/aws/aws-sdk-java-v2) dependencies.
+
+#[[##]]# Prerequisites
+- Java 1.8+
+- Apache Maven
+- [AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html)
+- Docker
+
+#[[##]]# Development
+
+The generated function handler class just returns the input. The configured AWS Java SDK client is created in `DependencyFactory` class and you can
+add the code to interact with the SDK client based on your use case.
+
+#[[####]]# Building the project
+```
+mvn clean install
+```
+
+#[[####]]# Testing it locally
+```
+sam local invoke
+```
+
+#[[####]]# Adding more SDK clients
+To add more service clients, you need to add the specific services modules in `pom.xml` and create the clients in `DependencyFactory` following the same
+pattern as ${serviceClientVariable}Client.
+
+#[[##]]# Deployment
+
+The generated project contains a default [SAM template](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html) file `template.yaml` where you can
+configure different properties of your lambda function such as memory size and timeout. You might also need to add specific policies to the lambda function
+so that it can access other AWS resources.
+
+To deploy the application, you can run the following command:
+
+```
+sam deploy --guided
+```
+
+See [Deploying Serverless Applications](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-deploying.html) for more info.
+
+
+
diff --git a/archetypes/archetype-lambda/src/main/resources/archetype-resources/pom.xml b/archetypes/archetype-lambda/src/main/resources/archetype-resources/pom.xml
new file mode 100644
index 000000000000..035954af7d98
--- /dev/null
+++ b/archetypes/archetype-lambda/src/main/resources/archetype-resources/pom.xml
@@ -0,0 +1,108 @@
+#parse ( "global.vm")
+
+
+ 4.0.0
+
+ ${groupId}
+ ${artifactId}
+ ${version}
+ jar
+
+ UTF-8
+ 1.8
+ 1.8
+ 3.1.1
+ 3.6.1
+ 1.6.0
+ ${javaSdkVersion}
+ 1.2.0
+ 5.4.2
+#if( $httpClient == 'netty-nio-client')
+ ${nettyOpenSslVersion}
+#end
+
+
+
+
+
+ software.amazon.awssdk
+ bom
+ ${aws.java.sdk.version}
+ pom
+ import
+
+
+
+
+
+
+ software.amazon.awssdk
+ ${moduleName}
+
+
+ software.amazon.awssdk
+ netty-nio-client
+
+
+ software.amazon.awssdk
+ apache-client
+
+
+
+
+
+ software.amazon.awssdk
+ ${httpClient}
+
+
+#if( $httpClient == 'netty-nio-client')
+
+
+ io.netty
+ netty-tcnative-boringssl-static
+ ${netty.openssl.version}
+
+#end
+
+ com.amazonaws
+ aws-lambda-java-core
+ ${aws.lambda.java.version}
+
+
+
+
+ org.junit.jupiter
+ junit-jupiter
+ ${junit5.version}
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven.compiler.plugin.version}
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ ${maven.shade.plugin.version}
+
+ false
+ ${artifactId}
+
+
+
+ package
+
+ shade
+
+
+
+
+
+
+
diff --git a/archetypes/archetype-lambda/src/main/resources/archetype-resources/src/main/java/DependencyFactory.java b/archetypes/archetype-lambda/src/main/resources/archetype-resources/src/main/java/DependencyFactory.java
new file mode 100644
index 000000000000..f9f4ed2f2e3b
--- /dev/null
+++ b/archetypes/archetype-lambda/src/main/resources/archetype-resources/src/main/java/DependencyFactory.java
@@ -0,0 +1,27 @@
+#parse ( "global.vm")
+
+package ${package};
+
+import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider;
+import software.amazon.awssdk.http.${httpClientPackageName};
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.${servicePackage}.${serviceClientClassName};
+
+/**
+ * The module containing all dependencies required by the {@link ${handlerClassName}}.
+ */
+public class DependencyFactory {
+
+ private DependencyFactory() {}
+
+ /**
+ * @return an instance of ${serviceClientClassName}
+ */
+ public static ${serviceClientClassName} ${serviceClientVariable}Client() {
+ return ${serviceClientClassName}.builder()
+ .credentialsProvider(EnvironmentVariableCredentialsProvider.create())
+ .region(Region.${regionEnum})
+ .httpClientBuilder(${httpClientClassName}.builder())
+ .build();
+ }
+}
diff --git a/archetypes/archetype-lambda/src/main/resources/archetype-resources/src/main/java/__handlerClassName__.java b/archetypes/archetype-lambda/src/main/resources/archetype-resources/src/main/java/__handlerClassName__.java
new file mode 100644
index 000000000000..8a66c4aa925d
--- /dev/null
+++ b/archetypes/archetype-lambda/src/main/resources/archetype-resources/src/main/java/__handlerClassName__.java
@@ -0,0 +1,29 @@
+#parse ( "global.vm")
+package ${package};
+
+import com.amazonaws.services.lambda.runtime.Context;
+import com.amazonaws.services.lambda.runtime.RequestHandler;
+import software.amazon.awssdk.services.${servicePackage}.${serviceClientClassName};
+
+/**
+ * Lambda function entry point. You can change to use other pojo type or implement
+ * a different RequestHandler.
+ *
+ * @see Lambda Java Handler for more information
+ */
+public class ${handlerClassName} implements RequestHandler