2016-07-09 36 views
7

Quando si scrive una funzione AWS Java Lambda attivata dagli eventi pianificati di Cloudwatch, quale oggetto evento viene passato alla funzione gestore Lambda?AWS Lambda - CloudWatch Tipo evento

Ad esempio, per una funzione Lambda attivata da un evento S3, AWS richiama la funzione e passa un oggetto S3Event. Allo stesso modo, passerebbe un oggetto SNSEvent a una funzione attivata da un messaggio SNS.

public class LambdaHandler { 

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

O

public class LambdaHandler { 

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

Per una funzione guidato CloudWatch Evento In programma, quello che sarebbe stato al posto di SNSEvent/S3Event?

public class LambdaHandler { 

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

non posso per la vita di me trovare nessuna esempi di funzioni AWS Lambda scritte in Java che vengono attivati ​​da eventi programmati CloudWatch ...

punti di bonus per una funzione di esempio.

EDIT 1 Non esiste una risposta corretta a questa ancora (anche se non so che AWS ha rilasciato un oggetto proprio 'evento' nel SDK che sarebbe passato alla funzione lambda), quindi non ci può in realtà essere una risposta che stavo cercando.

Questa domanda è stata anche posta qui: What is the parameter type passed to a Lambda function by a CloudWatch Events - Schedule trigger? e qualcuno ha commentato suggerendo di utilizzare Object e di stampare il nome della classe. Si è rivelato essere una LinkedHashMap. Sembra essere corretto di una risposta come sto per ottenere ...

+0

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

+0

@ Michael-sqlbot Probabilmente, anche se quello è JSON. Sono sicuro che la risposta è proprio di fronte a me, ma qual è l'effettiva classe di evento Java passata alla funzione di gestione Lambda? – Brooks

risposta

1

com.amazonaws.services.lambda.runtime.events.ScheduledEvent è la risposta corrente.

Posso vedere che nella versione 2.0.2 della libreria aws-lambda-java-events questo è disponibile. Il codice è here e ulteriori dettagli sulla versione 2.0 sono here

+0

Hah! Fantastico che lo abbiano finalmente creato! – Brooks

1

Sfortunatamente non esiste una classe specifica per questo tipo di eventi.

Ma è possibile creare liberamente i propri POJO e specificarli come classe del parametro evento. Ad esempio, CloudWatchEvent può essere descritto come:

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 motore Lambda tenta automaticamente di serializzare ingresso nell'oggetto della classe proposta.

Per conoscere la struttura è possibile specificare il tipo "Mappa" e la stampa è da registrare:

public void eventHandler(Map event, Context context) { 
     log.debug(event); // or System.out.... 
    } 
Problemi correlati