-
Notifications
You must be signed in to change notification settings - Fork 3k
Description
Describe the bug
When running my DynamoDB-stream triggered lambda I receive the following error:
2021-01-21 01:37:10,665 ERROR [io.qua.ama.lam.run.AbstractLambdaPollLoop] (Lambda Thread) Failed to run lambda: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of
java.util.Date out of VALUE_NUMBER_FLOAT token at [Source: (sun.net.www.protocol.http.HttpURLConnection$HttpInputStream); line: 1, column: 196] (through reference chain: com.amazonaws.services.lambda.runtime.events.DynamodbEvent["Records"]->java.util.ArrayList[0]->com.amazonaws.services.lambda.runtime.events.DynamodbEvent$DynamodbStreamRecord["dynamodb"]->com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord["ApproximateCreationDateTime"]) ... at io.quarkus.amazon.lambda.runtime.AbstractLambdaPollLoop$1.run(AbstractLambdaPollLoop.java:78)
This happens because AWS passes unix timestamps as a float value with milliseconds after the decimal point.
My handleRequest method looks like this:
public LambdaResponse handleRequest(com.amazonaws.services.lambda.runtime.events.DynamodbEvent trigger, Context context)
I am using a native build(GraalVM), not sure if that matters.
Expected behavior
I expect the lambda to be trigger using a Strongly-Type Java Object as event.
Actual behavior
The lambda Crashes with a jackson Deserialization error.
To Reproduce
Will provide reproducer.
Steps to reproduce the behavior:
- Create a simple quarkus lambda project with a DynamoDB event in the handler method
- Deploy using dynamodb-stream trigger
- Put an item in the dynamodb table
Configuration
<commons-lang3.version>3.11</commons-lang3.version>
<compiler-plugin.version>3.8.1</compiler-plugin.version>
<cucumber.version>6.9.1</cucumber.version>
<maven.compiler.parameters>true</maven.compiler.parameters>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<quarkus-plugin.version>1.11.0.Final</quarkus-plugin.version>
<quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id>
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
<quarkus.platform.version>1.11.0.Final</quarkus.platform.version>
<unirest.version>3.11.10</unirest.version>
<java-jwt.version>3.12.0</java-jwt.version>
<javafaker.version>1.0.2</javafaker.version>
...
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-amazon-lambda</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-mutiny</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-test-amazon-lambda</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-kafka-client</artifactId>
</dependency>
Environment (please complete the following information):
- AWS lambda