当前位置: 首页 > 知识库问答 >
问题:

AWS Lambda-CloudWatch事件类型

容柏
2023-03-14

当编写由Cloudwatch计划事件触发的AWSJavaLambda函数时,哪个事件对象被传递给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计划事件驱动功能,什么将取代SNSEent/S3事件?

public class LambdaHandler {

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

我一辈子都找不到任何用Java编写的AWS Lambda函数被Cloudwatch计划事件触发的例子。。。

示例函数的奖励点数。

编辑1对此还没有正确的答案(尽管我不知道AWS在SDK中发布了一个适当的“事件”对象,该对象将被传递给Lambda函数),因此可能实际上没有我想要的答案。

这里还提出了一个问题:CloudWatch事件调度触发器传递给Lambda函数的参数类型是什么?有人建议使用Object并打印类名。原来是一张LinkedHashMap。看来我得到的答案是正确的。。。

共有3个答案

徐洋
2023-03-14

不幸的是,这种类型的事件没有特定的类。

但您可以自由创建自己的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....
  }
万阳嘉
2023-03-14

下面是它的样板代码。

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>
羊舌新荣
2023-03-14

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

我可以在aws lambda java事件库的2.0.2版本中看到这一点。代码在这里,关于2.0版本的更多细节在这里

 类似资料:
  • 我正在使用Amazon Transcripbe服务,并试图让CloudWatch事件激发一个Lambda函数,该函数执行对我的API的POST请求。 下面是Lambda函数 我已经将CloudWatch事件配置为监听Amazon Transcripbe服务,特别是监听作业状态更改为或。 这是我认为我的应用程序工作的唯一方式,转录作业是通过亚马逊转录服务调用的,然后当它完成时,点击我的API来更新我

  • 我正在尝试设置Cloudwatch事件规则来通知任何AWS IAM操作,例如DeleteUser或CreateUser。但是当我尝试创建事件模式时,我在服务名称列表中找不到IAM,即使当我在AWS留档中搜索时,我找不到Cloudwatch事件规则不支持IAM的提及。所以我尝试创建一个自定义事件,但我没有收到来自SNS(我的目标)的任何电子邮件,是的,我确保Cloudwatch具有调用SNS的权限,

  • 我正在打电话给aws cloud. WatchEvent putRur

  • 我正在学习TF并尝试应用一个架构体系来创建: 一个简单的lambda函数 一个SNS话题 让lambda订阅SNS主题 以一定间隔向主题发布消息的Cloud Watch事件 一个Cloud Watch日志组,用于检查lambda是否收到SNS的通知 允许来自SNS的调用的lambda权限 我能够成功地应用它。基础架构看起来非常好(当我通过可视化aws控制台自己创建时,它具有相同的方面) 但云观察事

  • 我尝试使用以下cron表达式添加CloudWatch计划事件: 我想每天一点钟触发这个事件。但是我总是得到以下错误: 保存规则dms unstage胫骨时出错。详细信息:参数ScheduleExpression无效。 这个cron表达式中有什么错误?

  • 我已经使用配置了一个CloudWatch规则以在给定时间运行,但Lambda只是有时被调用。我已经确保Lambda执行角色具有适当的权限,有时CloudWatch规则会正确运行,调用我的Lambda函数。 例如,我以编程方式创建了一个规则,启用了它,并使用Python中的boto3客户端添加了一个目标,然后当角色执行时,它会执行,并在CloudWatch度量中显示“调用错误”。我采用了同样的规则,