我目前正在学习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的文章,但我不确定这是不是正确的方法。而且我也不是很理解它
1条答案
按热度按时间cclgggtu1#
AWS在
aws-lambda-java-events
库中发布了许多事件,其中包括APIGatewayV2HTTPEvent
等通用事件。这些事件本质上为您提供了通用bean来处理事件JSON。请在此处查看该项目:https://github.com/aws/aws-lambda-java-libs/tree/main/aws-lambda-java-events