diff --git a/pom.xml b/pom.xml
index 7a6dbdd2a..53201fe76 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,6 +58,7 @@
spring-cloud-function-web
spring-cloud-function-samples
spring-cloud-function-deployer
+ spring-cloud-function-adapters
diff --git a/spring-cloud-function-adapters/pom.xml b/spring-cloud-function-adapters/pom.xml
new file mode 100644
index 000000000..177fa3dbb
--- /dev/null
+++ b/spring-cloud-function-adapters/pom.xml
@@ -0,0 +1,30 @@
+
+
+ 4.0.0
+
+ org.springframework.cloud
+ spring-cloud-function-adapter-parent
+ 1.0.0.BUILD-SNAPSHOT
+ pom
+
+ spring-cloud-function-adapter-parent
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ Dalston.BUILD-SNAPSHOT
+ pom
+ import
+
+
+
+
+
+ spring-cloud-function-adapter-aws
+ spring-cloud-function-adapter-sample
+
+
+
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/.jdk8 b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/.jdk8
new file mode 100644
index 000000000..e69de29bb
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/pom.xml b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/pom.xml
new file mode 100644
index 000000000..57b2ac90a
--- /dev/null
+++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/pom.xml
@@ -0,0 +1,111 @@
+
+
+ 4.0.0
+
+ org.springframework.cloud
+ spring-cloud-function-adapter-aws
+ 1.0.0.BUILD-SNAPSHOT
+ jar
+
+ spring-cloud-function-adapter-aws
+ AWS Lambda Adapter for Spring Cloud Function
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 1.5.3.RELEASE
+
+
+
+
+ UTF-8
+ UTF-8
+ 1.8
+ 1.2.1
+ 3.0.7.RELEASE
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-function-context
+ 1.0.0.BUILD-SNAPSHOT
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ com.amazonaws
+ aws-lambda-java-events
+ ${aws-lambda-events.version}
+ provided
+
+
+ com.amazonaws
+ aws-lambda-java-log4j
+ 1.0.0
+ provided
+
+
+ io.projectreactor
+ reactor-core
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ Dalston.BUILD-SNAPSHOT
+ pom
+ import
+
+
+
+
+
+
+ spring-snapshots
+ Spring Snapshots
+ https://repo.spring.io/snapshot
+
+ true
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+ false
+
+
+
+
+
+ spring-snapshots
+ Spring Snapshots
+ https://repo.spring.io/snapshot
+
+ true
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+ false
+
+
+
+
+
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/FunctionInvokingKinesisEventHandler.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/FunctionInvokingKinesisEventHandler.java
new file mode 100644
index 000000000..444408db5
--- /dev/null
+++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/FunctionInvokingKinesisEventHandler.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2017 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.cloud.function.adapter.aws;
+
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.util.Date;
+
+import com.amazonaws.services.lambda.runtime.events.KinesisEvent;
+import com.amazonaws.services.lambda.runtime.events.KinesisEvent.KinesisEventRecord;
+
+/**
+ * @author Mark Fisher
+ */
+public class FunctionInvokingKinesisEventHandler extends SpringBootRequestHandler {
+
+ public FunctionInvokingKinesisEventHandler(Class> configurationClass) {
+ super(configurationClass);
+ }
+
+ @Override
+ protected String convertEvent(KinesisEvent event) {
+ StringBuilder result = new StringBuilder();
+ for (KinesisEventRecord record : event.getRecords()) {
+ String id = record.getEventID();
+ String name = record.getEventName();
+ String source = record.getEventSource();
+ Date timestamp = record.getKinesis().getApproximateArrivalTimestamp();
+ String partitionKey = record.getKinesis().getPartitionKey();
+ String sequenceNumber = record.getKinesis().getSequenceNumber();
+ ByteBuffer data = record.getKinesis().getData();
+ String dataString = new String(data.array(), Charset.forName("UTF-8"));
+ result.append(String.format("id=%s,name=%s,source=%s,timestamp=%s,partitionKey=%s,sequenceNumber=%s,data=%s",
+ id, name, source, timestamp, partitionKey, sequenceNumber, dataString));
+ }
+ return result.toString();
+ }
+}
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/FunctionInvokingS3EventHandler.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/FunctionInvokingS3EventHandler.java
new file mode 100644
index 000000000..0b3db676a
--- /dev/null
+++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/FunctionInvokingS3EventHandler.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2017 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.cloud.function.adapter.aws;
+
+import com.amazonaws.services.lambda.runtime.events.S3Event;
+
+/**
+ * @author Mark Fisher
+ */
+public class FunctionInvokingS3EventHandler extends SpringBootRequestHandler {
+
+ public FunctionInvokingS3EventHandler(Class> configurationClass) {
+ super(configurationClass);
+ }
+
+ @Override
+ protected String convertEvent(S3Event event) {
+ return event.toJson();
+ }
+}
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootRequestHandler.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootRequestHandler.java
new file mode 100644
index 000000000..c405f5181
--- /dev/null
+++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/SpringBootRequestHandler.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2017 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.cloud.function.adapter.aws;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import com.amazonaws.services.lambda.runtime.Context;
+import com.amazonaws.services.lambda.runtime.RequestHandler;
+
+import reactor.core.publisher.Flux;
+
+/**
+ * @author Mark Fisher
+ */
+public class SpringBootRequestHandler extends SpringFunctionInitializer implements RequestHandler> {
+
+ public SpringBootRequestHandler(Class> configurationClass) {
+ super(configurationClass);
+ }
+
+ public SpringBootRequestHandler() {
+ super();
+ }
+
+ @Override
+ public List handleRequest(E event, Context context) {
+ initialize();
+ Object input = convertEvent(event);
+ Flux> output = apply(extract(input));
+ return result(output);
+ }
+
+ private List result(Flux> output) {
+ List