2017-10-18 9 views
1

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.

Répondre

0

Vous pouvez écouter un des type d'événement dans la documentation,

http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html

Règle est pas un événement CloudWatch.

Vous pouvez également définir un objet dynamique et obtenir les détails de l'objet envoyé à votre Lambda.

Espérons que ça aide.

+0

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