编写由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事件触发的......
样本函数的加分点 .
EDIT 1 目前还没有正确答案(虽然我不会将SDK中的事件传递给Lambda函数),因此实际上可能没有我想要的答案 .
这个问题也在这里被问到:What is the parameter type passed to a Lambda function by a CloudWatch Events - Schedule trigger?并且有人评论建议使用Object并打印类名 . 原来是LinkedHashMap . 看起来像我要得到的答案一样正确......
3 回答
以下是它的样板代码 .
为maven添加以下依赖项:
遗憾的是,此类事件没有特定的类 .
但您可以自由创建自己的POJO并将它们指定为事件参数类 . 例如,CloudWatchEvent可以描述为:
AWS Lambda引擎自动尝试将输入序列化为给定类的对象 .
要知道结构,您可以指定类型“Map”并将其打印出来记录:
com.amazonaws.services.lambda.runtime.events.ScheduledEvent是当前的答案 .
我可以看到在2.0.2版本的aws-lambda-java-events库中这是可用的 . 代码是here,2.0版本的更多细节是here