我目前正在学习AWS Lambda以及如何从其他服务触发它。我已经设法使用SNS主题(在本教程的帮助下(发布了一个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或驱动蛋白。AFAIK这些服务向lambda函数发送不同的json输入,我不确定如何接收它,因为我目前正在使用SNSEvent
是否有一种方法可以接收泛型事件,并在处理程序内部确定发送该事件的服务?这样,我就可以将其解析为特定事件,并获得消息
我读过有关AWS Lambda事件源映射的文章,但我不确定是否应该这样做。我也不太理解
AWS在aws-lambda-java-events
库中发布许多事件,其中包括APIGatewayV2HTTPEvent
等通用事件。这些事件本质上为您提供了处理事件JSON的通用bean。点击此处查看项目:https://github.com/aws/aws-lambda-java-libs/tree/main/aws-lambda-java-events