Tanpa server: Api dan lupakan dengan metode pemanggilan tidak bekerja seperti yang diharapkan

9

Saya memiliki fungsi lambda Serverless , di mana saya ingin menjalankan (memanggil) metode dan melupakannya

Saya melakukannya dengan cara ini

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

Aku telah memperhatikan bahwa sampai dan kecuali saya melakukan Promise returndi myFunction1, itu tidak memicu myFunction2, tapi tidak harus mengatur lambda InvocationType = "Event"berarti kita ingin ini menjadi api dan lupa dan tidak peduli tentang respon callback?

Apakah saya melewatkan sesuatu di sini?

Setiap bantuan sangat dihargai.

Manzur Khan
sumber
Apakah Anda memeriksa log di Cloudwatch mengapa pemanggilan gagal?
Surendhar E

Jawaban:

2

Anda myFunction1harus fungsi async itu sebabnya fungsi kembali sebelum myFunction2dapat dipanggil lambda.invoke(). Ubah kode menjadi yang berikut ini maka seharusnya berfungsi:

 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
 }
Surendhar E
sumber