7

Tôi cần gọi aws lambda từ lambda khác một cách không đồng bộ. tôi có một mã làm việc cho các cuộc gọi đồng bộ.gọi aws lambda từ lambda khác không đồng bộ

exports.handler = (event, context, callback) => { 
    var aws = require('aws-sdk'); 
    var lambda = new aws.Lambda({ 
     region: 'myregion' //change to your region 
    }); 
    console.log("lambda invoke started"); 
    lambda.invoke({ 
     FunctionName: 'testLambda', 
     Payload: JSON.stringify(event, null, 2) // pass params 
    }, function (error, data) { 
     if (error) { 
      console.log("error"); 
      callback(null, 'hello world'); 
     } 
     else { 
      console.log("lambda invoke end"); 
      callback(null, 'hello world'); 
     } 
    }); 
} 

Nhưng trong trường hợp của tôi, 'testLambda' là hàm được thực hiện. Bởi vì tôi cần thoát ra ngay sau khi gọi hàm 'testLambda'. Sau đó, mã được cập nhật như thế này

exports.handler = (event, context, callback) => { 
    var aws = require('aws-sdk'); 
    var lambda = new aws.Lambda({ 
     region: 'myregion' //change to your region 
    }); 
    console.log("lambda invoke started"); 
    lambda.invoke({ 
     FunctionName: 'testLambda', 
     Payload: JSON.stringify(event, null, 2) // pass params 
    }); 
    console.log("lambda invoke end"); 
    callback(null, 'hello world'); 
} 

nó trả về thư chính xác. Nhưng hàm 'testLambda' của tôi không được gọi ra (không có nhật ký xem trên đám mây nào được tạo cho lambda thử nghiệm). vấn đề liên quan đến mã này là gì.

Trả lời

5

Nếu bạn dành thời gian để đọc the documentation, bạn sẽ thấy rằng theo mặc định, hàm lambda được gọi bằng cách sử dụng loại yêu cầu RequestResponse. Để gọi hàm không đồng bộ, bạn cần phải chỉ định loại yêu cầu Event, như vậy:

lambda.invoke({ 
    FunctionName: 'testLambda', 
    InvocationType: 'Event', 
    Payload: JSON.stringify(event, null, 2) 
},function(err,data){}); 
+0

Cảm ơn. nó hoạt động. –

Các vấn đề liên quan