aws lambda:通过其他lambda函数调用函数

Chr*_*ler 3 invoke amazon-web-services aws-lambda

我有一个AWS Lambda函数,需要~30秒.当我将其连接到API网关时,由于5秒超时,它正在发送504.所以我的easyCron工作失败了,不会再试一次(我只有一个免费的计划)

所以我需要一个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');

};
Run Code Online (Sandbox Code Playgroud)

但我认为,context.succeed()中止了执行lambda.invoke()

你知道如何解决这个问题吗?

Mik*_*e76 5

这是不正确的

InvocationType: 'RequestResponse'
Run Code Online (Sandbox Code Playgroud)

你应该用

InvocationType: 'Event'
Run Code Online (Sandbox Code Playgroud)

来自http://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestSyntax

默认情况下,Invoke API采用"RequestResponse"调用类型.您可以选择通过将"Event"指定为InvocationType来请求异步执行.