- AWS: Java S3 Lambda Handler
- AWS: Java Kinesis Lambda Handler
- AWS: Java S3 Upload
- AWS: Java Post to Kinesis Queue
- AWS: Send Simple Email Service
If you want to write a Lambda for AWS in Java that connects to a Kinesis Stream. You need to have the handler.
Maven:
<dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk</artifactId> <version>1.11.109</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.7.1</version> </dependency>
This is the method that AWS Lambda will call. It will look similar to the one below.
import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.events.KinesisEvent; import com.amazonaws.services.lambda.runtime.events.KinesisEvent.KinesisEventRecord; import com.amazonaws.services.kinesis.model.Record; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.JsonNode; public void kinesisRecordHandler(KinesisEvent kinesisEvent, Context context) { final String awsRequestId = context.getAwsRequestId(); final int memoryLimitMb = context.getMemoryLimitInMB(); final int remainingTimeInMillis = context.getRemainingTimeInMillis(); for (final KinesisEventRecord kinesisRec : kinesisEvent.getRecords()) { final Record record = kinesisRec.getKinesis(); //We get the kinesis data information final JsonNode recData = new ObjectMapper().readValue(record.getData().array(), JsonNode.class); final String bucketName = recData.get("bucket").asText(); final String key = recData.get("key").asText(); } }
The thing to note when you setup you Lambda is how to setup the “Handler” field in the “Configuration” section on AWS. It is in the format “##PACKAGE##.##CLASS##::##METHOD##”.