我试图从另一个lambda函数中的中调用异步lambda函数,并且我发现如果调用函数退出也不会执行它很快。
换句话说,以下内容并没有奏效。 LambdaFunction2永远不会被调用。
function lambdaFunction1(event, context) {
callLambdaFunction2();
context.done(null);
}
但是在LambdaFunction1退出之前添加一个小延迟确实可以工作到目前为止:
function lambdaFunction1(event, context) {
callLambdaFunction2();
setTimeout(
function() {
context.done(null);
}, 500
);
}
我担心的是等待500毫秒是一个相当随意的幻数。有没有人遇到过类似的问题并找到了更有原则性的修复方法?
答案 0 :(得分:5)
context.done(null)
导致处理程序退出之前, context.done
可能无法完成。
要解决此问题,您需要调用lambda.invoke({
FunctionName: "functionName",
InvocationType: 'Event',
Payload: JSON.stringify(event)
}, function(err, data) {
if (err) return context.done(err, null);
return context.done(null, data);
});
作为回调。例如:
callLambdaFunction2
如果这不是解决方案,您能否展示一下如何实施ss
?