从另一个Lambda函数异步启动AWS java Lambda函数
我的目标是从另一个Lambda函数中启动一个Lambda函数。具体来说,我希望第二个函数启动,让第一个函数独立于第二个函数完成。无需向第一个函数返回响应 我花了很多时间研究示例和AWS文档 我能够成功启动第二个功能,但无法独立于第一个功能运行。第一个函数总是在第二个函数完成之前等待它完成 我使用这个代码:从另一个Lambda函数异步启动AWS java Lambda函数,java,amazon-web-services,asynchronous,lambda,Java,Amazon Web Services,Asynchronous,Lambda,我的目标是从另一个Lambda函数中启动一个Lambda函数。具体来说,我希望第二个函数启动,让第一个函数独立于第二个函数完成。无需向第一个函数返回响应 我花了很多时间研究示例和AWS文档 我能够成功启动第二个功能,但无法独立于第一个功能运行。第一个函数总是在第二个函数完成之前等待它完成 我使用这个代码: AWSLambdaAsync lambda = AWSLambdaAsyncClientBuilder.standard().withRegion(Regions.EU_WEST_1).bui
AWSLambdaAsync lambda = AWSLambdaAsyncClientBuilder.standard().withRegion(Regions.EU_WEST_1).build();
InvokeRequest req = new InvokeRequest().withFunctionName(functionName).withPayload(jsonStuff);
// req.setInvocationType(InvocationType.Event);
Future<InvokeResult> future_res = lambda.invokeAsync(req);
然后启动第二个函数,但第一个函数等待第二个函数完成,然后继续
如何启动第二个函数而不必等待它完成。目前,它比第一个功能完成所需的时间长2秒(第一个功能在不启动第二个功能的情况下,需要4秒才能完成)。您可以向Amazon SNS发布消息。当您转到“配置”主题时,选择AWS Lambda并输入要触发的Lambda的ARN 甚至还有一个
这就是我个人要做的:这里有更多的基础设施,但它进一步分离了Lambda a和Lambda B的关注点(因为如果从现在起6个月后,你意识到Lambda B必须是一个传统的微服务呢?简单:只需重新配置SNS主题。Lambda a不必知道)。参考此:。将InvocationType设置为Event。默认情况下,调用API采用RequestResponse调用类型。非常感谢。我试过了,但没能成功。我想我的问题是调用publish:snsClient.publish(“arn:aws:sns:eu-west-1:xxxx…xxxx”,jsonStuff)时传递的消息(jsonStuff)的json格式;-有关于在哪里可以看到示例(java)的提示吗?谢天谢地,我终于弄明白了。需要创建接收SNS事件作为输入类型的lambda函数。然后将json输入消息作为字符串传递(使用Gson)以进行转换。
try {
InvokeResult thisResult = future_res.get();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}