Key libraries for running Java on the AWS Lambda platform.
For issues and questions, you can start with our FAQ and the AWS questions and answer site re:Post
To get started writing Lambda functions in Java, check out the official developer guide.
For information on how to optimize your functions watch the re:Invent talk Optimize your Java application on AWS Lambda.
This package defines the Lambda Context object as well as interfaces that Lambda accepts.
Example request handler
public class Handler implements RequestHandler<Map<String, String>, String>{
@Override
public String handleRequest(Map<String, String> event, Context context) {
}
}
Example request stream handler
public class HandlerStream implements RequestStreamHandler {
@Override
public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
}
}
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.2.1</version>
</dependency>
This package defines event sources that Lambda natively accepts. See the documentation for a list of currently supported event sources. Using this library you can have Java objects which represent event sources.
For example an SQS event:
import com.amazonaws.services.lambda.runtime.events.SQSEvent;
public class SqsHandler implements RequestHandler<SQSEvent, String> {
@Override
public String handleRequest(SQSEvent event, Context context) {
}
}
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-events</artifactId>
<version>3.11.0</version>
</dependency>
This package provides utils to ease Lambda Java testing. It uses the same Lambda serialisation logic and aws-lambda-java-events
to inject events in your JUnit tests.
@ParameterizedTest
@Event(value = "sqs/sqs_event.json", type = SQSEvent.class)
public void testInjectSQSEvent(SQSEvent event) {
...
}
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-tests</artifactId>
<version>1.1.1</version>
<scope>test</scope>
</dependency>
This package 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.
See the documentation for more information.
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-events-sdk-transformer</artifactId>
<version>3.1.0</version>
</dependency>
This package defines the Lambda adapter to use with Log4J version 2. See the README or the official documentation for information on how to use the adapter.
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-log4j2</artifactId>
<version>1.5.1</version>
</dependency>
This package defines the Lambda Java Runtime Interface Client package, a Lambda Runtime component that starts the runtime and interacts with the Runtime API - i.e., it calls the API for invocation events, starts the function code, calls the API to return the response. The purpose of this package is to allow developers to deploy their applications in Lambda under the form of Container Images. See the README for information on how to use the library.
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-runtime-interface-client</artifactId>
<version>2.1.1</version>
</dependency>
This package defines the Lambda serialization logic using in the aws-lambda-java-runtime-client
library. It has no current standalone usage.
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-serialization</artifactId>
<version>1.0.1</version>
</dependency>
Each of the supplied packages should be used without modification. Removing dependencies, adding conflicting dependencies, or selectively including classes from the packages can result in unexpected behavior.