[英]AWS Lambda - CloudWatch Event type
在编写由Cloudwatch预定事件触发的AWS Java Lambda函数时,哪个事件对象会传递给Lambda处理函数?
例如,对于由S3事件触发的Lambda函数,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) {
}
我无法为我的生活找到任何由Java编写的AWS Lambda函数的示例,这些函数由Cloudwatch Scheduled事件触发...
样本函数的加分点。
编辑1目前还没有正确答案(虽然我不知道AWS已经在SDK中发布了一个适当的'事件'对象,将被传递给Lambda函数),所以实际上可能没有答案我正在寻找。
此处还询问了这个问题: CloudWatch Events - Schedule触发器传递给Lambda函数的参数类型是什么? 有人评论建议使用Object并打印类名。 原来是LinkedHashMap。 看起来像我要得到的答案一样正确......
以下是它的样板代码。
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
}
}
为maven添加以下依赖项:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-events</artifactId>
<version>2.2.2</version>
</dependency>
不幸的是,这类事件没有特定的类。
但您可以自由创建自己的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引擎自动尝试将输入序列化为给定类的对象。
要知道结构,您可以指定类型“Map”并打印输出到日志:
public void eventHandler(Map event, Context context) {
log.debug(event); // or System.out....
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.