AWS事件桥接目标Java Lambda函数。

8
我正在使用Java lambda函数将自定义事件放到AWS EventBridge中。该Eventbridge的目标是另一个Java lambda函数。如何在目标lambda函数中接收事件?我的handleRequest方法中要使用什么输入类型?尝试使用ScheduledEvent作为输入类型,但它不起作用。搜索了许多EventBridge API文档,但没有获得从Eventbridge接收数据的详细信息。

以下是接收SQS事件的示例。以同样的方式,我应该使用哪种类型来处理从EventBridge触发的事件呢?

@Override
  public String handleRequest(SQSEvent event, Context context)
3个回答

2
我可以访问事件作为Map<String,Object>。该地图中的“detail”键提供了实际放入Eventbridge中的值。

1

您需要将请求处理程序从使用RequestHandler<SQSEvent, String>更改为使用RequestHandler<Map<String,String>, String>。这也将导致您的类/函数发生其他更改。

EventBridge事件(计划或您的事件)将以json编码字符串的形式显示在输入中。

个人而言,我发现更容易利用https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html#java-handler-interfaces中定义的RequestStreamHandler。还有一些示例代码链接,您可能会发现反序列化方面很有帮助。


啊,我一开始并不清楚(因此给出了其他回答,现在已经删除了),你说的是类应该实现 RequestHandler<Map<String,String>, String>,这意味着方法参数应该是 Map<String,String>。现在明白了,但问题中显示的是方法签名,所以对于我来说,一开始并不清楚要将其更改为什么。 - Garret Wilson

0
EventBridge的事件格式为Cloudwatch ScheduledEvents。AWS Lambda Runtime可以将传入的JSON解组为com.amazonaws.services.lambda.runtime.events.ScheduledEvent
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.ScheduledEvent;

public class Handler implements RequestHandler<ScheduledEvent, Boolean> {

    @Override
    public Boolean handleRequest(ScheduledEvent input, Context context) {
        return true;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接