2017-10-18 3 views
1

Ich habe eine Regel mit Cloudwatch der folgenden Ereignismustern erstellt:AWS Lambda Cloudwatch-Regel

{ 
    "detail-type": [ 
    "EMR Cluster State Change" 
    ], 
    "source": [ 
    "aws.emr" 
    ] 
} 

Die Idee ist, dass jedes Mal, wenn der Zustand des Clusters ändert, ist es eine Lambda-Funktion aufruft.

Nun, das Problem ist, dass, wenn es die Lambda-Funktion aufruft, ich die folgende Fehlermeldung erhalten:

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) 

Mit 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"; 
    } 
} 

So, die Klasse bin ich soll um die CloudWatch Rule-Ereignisse zu analysieren?

Vielen Dank.

Antwort

0

Sie können eines der Veranstaltung Art in der Dokumentation,

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

Regel ist NICHT ein Cloudwatch Ereignis zu hören.

Sie können auch ein dynamisches Objekt definieren und erhalten die Details des Objekts, die an Ihr Lambda gesendet werden.

Ich hoffe, es hilft.

+0

Im Grunde habe ich mein eigenes Objekt erstellt, um den JSON mit dem Codehaus "read" zu deserialisieren. Wie auch immer, ich bin schockiert Amazon bietet keine Klasse schon an ... – Alessandroempire