我有一个AWS Lambda函数,需要约30秒才能完成。当我将它连接到API网关时,由于5秒的超时,会发送504错误。因此,我的easyCron工作失败了,并且不会再尝试(我只有一个免费计划)。
所以我需要一个API,发送正确的200状态。
我的想法是:
通过短期Lambda调用长期Lambda。策略允许调用。
以下是代码:
所以我需要一个API,发送正确的200状态。
我的想法是:
通过短期Lambda调用长期Lambda。策略允许调用。
以下是代码:
var AWS = require('aws-sdk'),
params = {
FunctionName: 'cctv',
InvocationType: 'RequestResponse',
LogType: 'Tail'
},
lambda;
AWS.config.update({region: 'us-east-1'});
lambda = new AWS.Lambda();
exports.handler = function (event, context) {
'use strict';
lambda.invoke(params, function (err, data) {
if (err) {
console.log(err, err.stack);
}
else {
console.log(data);
}
});
context.succeed('hey cron job, I think my lambda function is not called');
};
但我认为,context.succeed()
会终止 lambda.invoke()
的执行。
您有任何解决方法吗?
exports.handler
,但这并没有被调用。 - Matt Houserlambda.invoke
。所以你的一级函数被调用了,但是你的一级函数实际上并没有调用你的二级函数。 - Matt Houserrequire('./index').handler({},{succeed:function(message){ console.log(message); },'error':function(){}});
因此,我猜应该调用lambda.invoke()
。 - Christian HallerAWS.Lambda.invoke
的本质是异步的。在lambda.invoke
回调函数中调用context.success
。 - Ricardo Nolde