【问题标题】:AWS Lambda function to create another AWS lambda function用于创建另一个 AWS lambda 函数的 AWS Lambda 函数
【发布时间】:2018-01-13 10:01:35
【问题描述】:

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

完成大部分工作的 lambda 函数的伪代码是:

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

上述逻辑是否可以在 lambda 函数中实现?如果以上都做不到,那替代逻辑应该是什么?

【问题讨论】:

  • @Carcigenicate 这个问题是指AWS lambda。
  • 啊,我的错。我不熟悉这些。

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


【解决方案1】:

你可能已经解决了,但这是我要做的 在主 lambda 中,我只调用另一个 lambda 函数 lamda.invoke(params: functionname.., other values)。 这将启动新的 lambda。

【讨论】:

    【解决方案2】:

    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 写的例子

    【讨论】:

      猜你喜欢
      • 2018-06-09
      • 2019-06-28
      • 1970-01-01
      • 2018-05-19
      • 2020-03-23
      • 1970-01-01
      • 2018-08-21
      • 1970-01-01
      • 2021-09-23
      相关资源
      最近更新 更多