2016-07-09 17 views
7

Podczas pisania funkcji AWS Java Lambda, która jest uruchamiana przez zaplanowane zdarzenia Cloudwatch, który obiekt zdarzenia zostanie przekazany do funkcji obsługi Lambda?AWS Lambda - CloudWatch Typ zdarzenia

Na przykład dla funkcji Lambda wyzwalanej przez zdarzenie S3, AWS wywołuje funkcję i przekazuje obiekt S3Event. Podobnie, przekazałby obiekt SNSEvent do funkcji wyzwalanej przez komunikat SNS.

public class LambdaHandler { 

    public void eventHandler(S3Event event, Context context) { 
    } 

LUB

public class LambdaHandler { 

    public void eventHandler(SNSEvent event, Context context) { 
    } 

Dla funkcji napędzanego Cloudwatch zaplanowanego zdarzenia, co byłoby zamiast SNSEvent/S3Event?

public class LambdaHandler { 

    public void eventHandler(__________ event, Context context) { 
    } 

nie mogę dla życia mnie znaleźć jakieś przykłady funkcji AWS lambda napisanych w języku Java, które są wywoływane przez Cloudwatch zaplanowanych zdarzeń ...

Dodatkowe punkty dla funkcji próbkowania.

EDIT 1 Nie ma prawidłowa odpowiedź na to jeszcze (choć nie wiem, że AWS wydała właściwej „zdarzenie” obiekt w SDK, które byłyby przekazywane do funkcji lambda), więc nie może właściwie jest to odpowiedź, której szukałem.

To pytanie zostało również zadane tutaj: What is the parameter type passed to a Lambda function by a CloudWatch Events - Schedule trigger? i ktoś skomentował sugerowanie używania obiektu i drukowania nazwy klasy. Okazało się być LinkedHashMap. Wygląda na poprawną odpowiedź, ponieważ dostanę ...

+0

Szukasz [tego] (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/EventTypes.html#schedule_event_type)? –

+0

@ Michael-sqlbot Prawdopodobnie, ale to JSON. Jestem pewien, że odpowiedź jest tuż przede mną, ale jaka jest rzeczywista klasa zdarzenia Java, która została przekazana do funkcji obsługi Lambda? – Brooks

Odpowiedz

1

com.amazonaws.services.lambda.runtime.events.ScheduledEvent jest obecny odpowiedź.

Widzę, że w wersji 2.0.2 biblioteki zdarzeń aws-lambda-java jest to dostępne. Kod to here, a więcej szczegółów na temat wersji 2.0: here

+0

Hah! Wspaniale, że w końcu to stworzyli! – Brooks

1

Niestety nie ma konkretnej klasy dla tego typu zdarzeń.

Można jednak dowolnie tworzyć własne obiekty POJO i określać je jako klasę parametru zdarzenia. Na przykład, CloudWatchEvent można opisać jako:

public class CloudWatchEvent { 

    private String version; 
    private String id; 
    private String detailType; 
    private String source; 
    private String account; 
    private Date time; 
    private String region; 
    private List<String> resources; 
    ... 
    // getters and setters 
} 

AWS silnik Lambda automatycznie próbuje serializacji wejście do obiektu danej klasy.

Aby poznać strukturę można określić typ „Mapa” i wydruk to do logowania:

public void eventHandler(Map event, Context context) { 
     log.debug(event); // or System.out.... 
    } 
Powiązane problemy