2016-07-09 1 views
7

При написании функции AWS Java Lambda, вызванной запланированными событиями Cloudwatch, какой объект события передается функции Lambda-обработчика?AWS Lambda - CloudWatch Тип события

Например, для функции Lambda, вызванной событием S3, AWS вызывает функцию и передает объект S3Event. Аналогичным образом, объект SNSEvent передал бы функции, вызванной сообщением SNS.

public class LambdaHandler { 

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

ИЛИ

public class LambdaHandler { 

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

Для ведомой функции в Cloudwatch запланированное событие, что бы вместо SNSEvent/S3Event?

public class LambdaHandler { 

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

Я не могу за жизнь мне найти примеры AWS лямбда-функций, написанных на Java, которые запускаются Cloudwatch Запланированные события ...

Бонусные баллы для функции образца.

EDIT 1 Там нет правильного ответа на этот вопрос пока (хотя я не знаю, что AWS выпустила правильный «событие» объект в SDK, который будет передан в функцию лямбды), так что не может на самом деле это был ответ, который я искал.

Этот вопрос также задал здесь: What is the parameter type passed to a Lambda function by a CloudWatch Events - Schedule trigger? и кто-то прокомментировал предложение использования объекта и печать имени класса. Оказалось, что это LinkedHashMap. Выглядит так же правильно, как я собираюсь получить ...

+0

Вы ищете [это] (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/EventTypes.html#schedule_event_type)? –

+0

@ Michael-sqlbot Наверное, хотя это JSON. Я уверен, что ответ прямо передо мной, но каков фактический класс событий Java, который передается функции Lambda-обработчика? – Brooks

ответ

1

com.amazonaws.services.lambda.runtime.events.ScheduledEvent является текущим ответом.

Я вижу, что в версии 2.0.2 версии aws-lambda-java-events это доступно. Кодекс here и более подробной информации о версии 2.0 является here

+0

Ха! Удивительно, что они, наконец, создали его! – Brooks

1

К сожалению, для этого типа событий нет определенного класса.

Но вы можете свободно создавать свои собственные POJO и указывать их как класс параметра события. Например, CloudWatchEvent может быть описана как:

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 
} 

АМС Лямбда двигатель автоматически пытается сериализовать вход в объект данного класса.

Чтобы узнать структуру, которую вы можете указать тип «Карта» и распечатайте его войти:

public void eventHandler(Map event, Context context) { 
     log.debug(event); // or System.out.... 
    } 
Смежные вопросы