编写由Cloudwatch预定事件触发的AWS Java Lambda函数时,哪个事件对象会传递给Lambda处理函数?
例如,对于由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编写的由Cloudwatch Scheduled事件触发的AWS Lambda函数的任何示例...
示例函数的加分点。
编辑1 目前还没有正确答案(虽然我不知道AWS已经在SDK中发布了一个适当的事件对象传递给Lambda函数),所以实际上可能没有我想要的答案。
这里也提出了这个问题:What is the parameter type passed to a Lambda function by a CloudWatch Events - Schedule trigger?并且有人评论建议使用Object并打印类名。原来是LinkedHashMap。看起来像答案一样正确......
答案 0 :(得分:9)
com.amazonaws.services.lambda.runtime.events.ScheduledEvent是当前的答案。
我可以看到在2.0.2版本的aws-lambda-java-events库中这是可用的。代码为here,有关2.0版本的详细信息为here
答案 1 :(得分:2)
以下是其样板代码。
Field('field_name', 'datetime', default=now)
为maven添加以下依赖项:
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.events.ScheduledEvent;
public class CollectionLambda {
public void eventHandler(ScheduledEvent event, Context context) {
// todo
}
}
答案 2 :(得分: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引擎会自动尝试将输入序列化为给定类的对象。
要了解结构,您可以指定类型&#34; Map&#34;并将其打印出来记录:
public void eventHandler(Map event, Context context) {
log.debug(event); // or System.out....
}