aws / aws/aws-lambda-java-libs
Scheduled Event (V2) contains non-object detail parameter (it is a string)
- Langage dominant
- Java
- Étoiles
- 548
- Forks
- 241
- Merge moyen
- 2 j 5 min
- PR mergées (30 j)
- 11
Description
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.
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par le modèle ScheduledEvent et le chemin de désérialisation de JacksonFactory nommé dans la stack trace, puis comparez-les avec le payload EventBridge Scheduler présenté. C’est terminé lorsque le detail de l’événement planifié V2, dont la valeur est une chaîne, peut être représenté et désérialisé sans l’exception MismatchedInputException signalée, et que le comportement de compatibilité choisi est couvert par des tests.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- aws, java
- Domaine
- backend
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100