java AWS Lambda函数是否可以接收通用事件,然后确定它是哪种类型的事件?

laik7k3q  于 2023-03-28  发布在  Java
关注(0)|答案(1)|浏览(110)

我目前正在学习AWS Lambda以及如何从其他服务触发它。我已经设法使用SNS主题(在this tutorial的帮助下)发布了一个JSON,如:

{
    "name":"Bojack",
    "lastName":"Horseman",
    "job":"Horsin around"
}

并触发Lambda函数:

public class LambdaHandler implements RequestHandler<SNSEvent, MyResponse> {

    public MyResponse handleRequest(SNSEvent request, Context context){

        String input = request.getRecords().get(0).getSNS().getMessage();
        MyRequest myRequest = new Gson().fromJson(input, MyRequest.class);

        context.getLogger().log(MyRequest.toString());

        // do some logic

        return null;
     }
}

效果很好!
但是,现在我试图弄清楚如何添加一个新的服务,也可以触发这个函数。例如SQS,或kinesis. AFAIK这些服务向lambda函数发送不同的json输入,我不确定如何接收,因为我目前使用SNSEvent
有没有一种方法可以接收一个通用事件,并在处理程序中确定哪个服务是发送它的服务?这样我就可以将它解析为特定的事件并获得消息
我读过关于AWS Lambda Event Source Mapping的文章,但我不确定这是不是正确的方法。而且我也不是很理解它

cclgggtu

cclgggtu1#

AWS在aws-lambda-java-events库中发布了许多事件,其中包括APIGatewayV2HTTPEvent等通用事件。这些事件本质上为您提供了通用bean来处理事件JSON。请在此处查看该项目:https://github.com/aws/aws-lambda-java-libs/tree/main/aws-lambda-java-events

相关问题