サーバーレス:起動メソッドによる起動と削除が期待どおりに機能しない


9

私が持っているサーバレス ラムダ私は火(呼び出し)したい機能、方法をそしてそれを忘れ

この方法でやっています

   // 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
  }

Promise returnin を実行するまではmyFunction1、トリガーされないことに気づきましたがmyFunction2、ラムダを設定して、これを起動して忘れてコールバック応答を気にしないInvocationType = "Event"ことを意味する必要はありませんか?

ここで何か不足していますか?

どんな助けでも大歓迎です。


呼び出しが失敗した理由についてCloudwatchのログを確認しましたか?
Surendhar E

回答:


2

あなたmyFunction1は非同期関数であるべきです、それmyFunction2が関数がで呼び出される前に戻る理由lambda.invoke()です。コードを次のように変更すると、機能するはずです。

 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
 }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.