서버리스 : 호출 메소드로 실행하여 실행이 예상대로 작동하지 않습니다.


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.