2016-07-09 111 views
7

編寫由Cloudwatch計劃事件觸發的AWS Java Lambda函數時,哪個事件對象被傳遞給Lambda處理函數?AWS Lambda - CloudWatch事件類型

例如,對於由S3事件觸發的Lambda函數,AWS會調用該函數並傳遞一個S3Event對象。同樣,它會將SNSEvent對象傳遞給由SNS消息觸發的函數。

public class LambdaHandler { 

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

OR

public class LambdaHandler { 

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

對於CloudWatch的調度事件驅動的功能,這將是到位SNSEvent/S3Event的?

public class LambdaHandler { 

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

我不能爲我的生活找到一個用Java編寫AWS lambda函數由CloudWatch的預定事件觸發的任何例子...

積分爲樣本功能。

編輯1目前還沒有正確的答案(雖然我不知道AWS已經發布了一個適當的'event'對象在SDK中傳遞給Lambda函數),所以可能不會實際上是我正在尋找的答案。

這個問題也在這裏問:What is the parameter type passed to a Lambda function by a CloudWatch Events - Schedule trigger?和有人評論建議使用對象和打印類名稱。原來是一個LinkedHashMap。看起來是正確的答案,因爲我會得到...

+0

您是否在尋找[this](http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/EventTypes.html#schedule_event_type)? –

+0

@ Michael-sqlbot可能吧,儘管這是JSON。我確信答案在我面前,但傳遞給Lambda處理函數的實際Java事件類是什麼? – Brooks

回答

1

com.amazonaws.services.lambda.runtime.events.ScheduledEvent是當前的答案。

我可以看到,在aws-lambda-java-events庫的2.0.2版本中,這是可用的。代碼是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 
} 

AWS LAMBDA引擎自動嘗試序列輸入到給定的類的對象。

要知道,你可以指定型結構的「地圖」,並打印輸出它登錄:

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