aws / aws/aws-lambda-java-libs
Scheduled Event (V2) contains non-object detail parameter (it is a string)
- Lenguaje dominante
- Java
- Estrellas
- 548
- Forks
- 241
- Merge medio
- 2 d 5 min
- PR fusionados (30 d)
- 11
Descripción
When I'm using ScheduledEvent as a source event in the lambda handler where actually Amazon EventBridge Scheduler's Schedule is a trigger for the function, I'm getting
```
An error occurred during JSON parsing: java.lang.RuntimeException
java.lang.RuntimeException: An error occurred during JSON parsing
Caused by: java.io.UncheckedIOException: com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `java.util.LinkedHashMap` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('
{}
')
at [Source: (ByteArrayInputStream); line: 1, column: 318] (through reference chain: com.amazonaws.services.lambda.runtime.events.ScheduledEvent["detail"])
at com.amazonaws.services.lambda.runtime.serialization.factories.JacksonFactory$InternalSerializer.fromJson(JacksonFactory.java:199)
Caused by: com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `java.util.LinkedHashMap` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('
{}
')
```
because "detail" parameter in that event is not an object - it is a string. Look at this sample below from Java logger:
```
Event: {
"version": "0",
"id": "4e6638b7-b892-4482-9762-8c58d4e71ebb",
"detail-type": "Scheduled Event",
"source": "aws.scheduler",
"account": "xxx",
"time": "2024-05-06T10:58:00Z",
"region": "eu-west-1",
"resources": [
"arn:aws:scheduler:eu-west-1:xxx:schedule/default/xxx"
],
"detail": "{}"
}
```
IMO AWS should fix this event source for sending object-compatible field or we should implement new class e.g. `ScheduledV2Event` with a `String` type, not a Map. It looks like the "old" Scheduled Event is not compatible with the new Scheduled V2 Event.
Guía de contribución
Línea de trabajo
Comienza con el modelo ScheduledEvent y la ruta de deserialización de JacksonFactory mencionada en el stack trace; después, compáralos con el payload de EventBridge Scheduler mostrado. Se considera terminado cuando el detail del evento programado V2, cuyo valor es una cadena, pueda representarse y deserializarse sin la MismatchedInputException indicada, y el comportamiento de compatibilidad elegido esté cubierto por pruebas.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- aws, java
- Área
- backend
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100