J'ai créé une règle CloudWatch avec le motif d'événement suivant:AWS Lambda CloudWatch Règle
{
"detail-type": [
"EMR Cluster State Change"
],
"source": [
"aws.emr"
]
}
L'idée est que chaque fois que l'état des changements de cluster, il appelle une fonction lambda.
Maintenant, le problème est que quand il appelle la fonction lambda, je reçois l'erreur suivante:
An error occurred during JSON parsing: java.lang.RuntimeException
java.lang.RuntimeException: An error occurred during JSON parsing
Caused by: java.io.UncheckedIOException: com.fasterxml.jackson.databind.JsonMappingException: Conflicting setter definitions for property "state": com.amazonaws.services.cloudwatchevents.model.Rule#setState(1 params) vs com.amazonaws.services.cloudwatchevents.model.Rule#setState(1 params)
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Conflicting setter definitions for property "state": com.amazonaws.services.cloudwatchevents.model.Rule#setState(1 params) vs com.amazonaws.services.cloudwatchevents.model.Rule#setState(1 params)
Avec code:
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.cloudwatchevents.model.Rule;
public class ErrorLambda implements RequestHandler<Rule, String> {
private static final Logger LOG = Logger.getLogger(ErrorLambda.class);
public String handleRequest(Rule input, Context context) {
LOG.info("Rule is " + input);
return "Ok";
}
}
Alors, quelle classe suis-je censé utiliser analyser les événements CloudWatch Rule?
Merci.
Fondamentalement, ce que j'ai fait a été créé mon propre objet pour désérialiser le JSON en utilisant codehaus "read". Cependant, je suis choqué Amazon ne fournit pas une classe déjà ... – Alessandroempire