AWS Lambda函数用于创建另一个AWS lambda函数

时间:2017-08-05 16:35:45

标签: node.js amazon-web-services cron aws-lambda

我希望我的应用程序调用lambda函数。 lambda函数应该创建一个lambda函数的实例,使实例成为一个cron作业,每小时运行N次(N = 1000),并将事件键传递给lambda函数。

执行大部分工作的lambda函数的伪代码是:

  • newLamdaFunc =从另一个lambda函数创建
  • 为newLambdaFunc设置触发器(使其成为一个cron作业)
  • newLambdaFunc.event.someKey = someValue

上述逻辑是否可以在lambda函数中使用?如果上述情况不可能,那么备用逻辑应该是什么?

2 个答案:

答案 0 :(得分:0)

您可能已经解决了,但是这就是我要做的 在主Lambda中,我只调用另一个Lambda函数lamda.invoke(参数:functionname ..,其他值)。 这将启动新的lambda。

答案 1 :(得分:0)

AWS-CDK允许您从代码创建lambda。 Docs

import lambda = require('@aws-cdk/aws-lambda');

const lambdaFn = new lambda.Function(this, 'MyFunction', {
    runtime: lambda.Runtime.NODEJS_8_10,
    handler: 'index.handler',
    code: lambda.Code.fromInline('exports.handler = function(event, ctx, cb) { return cb(null, "hi"); }'),
});

您几乎可以在其中放置任何代码。
接下来需要做的是定义事件源。对于您的用例,我将使用aws-events
这是一个示例:

import events = require('@aws-cdk/aws-events');
import targets = require('@aws-cdk/aws-events-targets');

const rule = new events.Rule(this, 'Rule', {
    schedule: events.Schedule.expression('cron(0 * * * *)')
});

rule.addTarget(new targets.LambdaFunction(lambdaFn));

Here,您可以找到用TypeScript编写的示例