AWS Lambda完成触发另一个lambda

时间:2018-01-09 21:13:47

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

当我有一个AWS lambda完成时,我想触发另一个lambda运行。第一个lambda让我们调用X,充满了异步代码,我宁愿不要乱用它。我以为我可以使用cloudwatch来说X完成后调用lambda Y.但我无法知道如何做到这一点。

有人可以帮我弄清楚当另一个lambda完成时如何运行1个lambda吗?非常感谢你

修改

有人建议我包装所有异步调用并使用SDK,重新编写此代码以使用新的sdk是不可行的。我正在寻找的是监视lambda何时完成然后调用另一个lambda的方法。更多的观察者模式而不是通知模式。

3 个答案:

答案 0 :(得分:0)

让您的第一个Lamba在SNS上发送消息。然后configure CloudWatch to monitor SNS,结果是运行你的第二个Lambda。

答案 1 :(得分:0)

ll = 262709978263278 f = 262709979381760.000000 允许您实例化一个新的Lambda对象,并假设您知道要执行的第二个lambda的ARN,您可以在异步代码完成后调用它。

对于第一个lambda中给定代码的类似内容应该有效...

aws-sdk

答案 2 :(得分:0)

你可以通过包装回调函数来快速修复以触发你的lambda。

let wrap = (originalFunction) => {
    return (event, context, callback) => {
        let overwriteCallback = (err, data) => {
            // do your stuff here
            // publish to sns to run your lambda
            // or directly run your lambda
            // then finally run callback

            callback(err, data)
        }
        originalFunction(event, context, overwriteCallback);
    }
}

module.exports = wrap((event, context, callback) => {
    //original mess we don't want to touch
})

如果年龄较大,您可能还想覆盖  context.succeed(); context.fail(); context.done()

您可以在此处找到有关这些方法的文档: https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-using-old-runtime.html