无服务器:通过调用方法触发并忘记无法按预期工作

Serverless: Fire and forget by invoke method does not work as expected

我有一个 Serverless lambda 函数,我想在其中触发(调用)一个方法然后忘记它

我是这样做的

   // myFunction1
   const params = {
    FunctionName: "myLambdaPath-myFunction2", 
    InvocationType: "Event", 
    Payload: JSON.stringify(body), 
   };

   console.log('invoking lambda function2'); // Able to log this line
   lambda.invoke(params, function(err, data) {
      if (err) {
        console.error(err, err.stack);
      } else {
        console.log(data);
      }
    });


  // my function2 handler
  myFunction2 = (event) => {
   console.log('does not come here') // Not able to log this line
  }

我注意到,除非我在 myFunction1 中执行 Promise return,否则不会触发 myFunction2,但不应设置 lambda InvocationType = "Event" 意思是我们希望它 触发即忘 而不关心回调响应?

我是不是漏掉了什么?

非常感谢任何帮助。

您的 myFunction1 应该是一个异步函数,这就是为什么可以在 lambda.invoke() 中调用 myFunction2 之前的函数 returns 的原因。将代码更改为以下内容,然后它应该可以工作:

 const params = {
    FunctionName: "myLambdaPath-myFunction2", 
    InvocationType: "Event", 
    Payload: JSON.stringify(body), 
 };

 console.log('invoking lambda function2'); // Able to log this line
 return await lambda.invoke(params, function(err, data) {
     if (err) {
       console.error(err, err.stack);
     } else {
       console.log(data);
     }
 }).promise();


 // my function2 handler
 myFunction2 = async (event) => {
   console.log('does not come here') // Not able to log this line
 }