通过步骤函数执行lambda时出错

时间:2017-06-22 12:59:49

标签: amazon-web-services aws-lambda aws-step-functions

我正在执行步骤功能。但是,我在执行一个州时遇到错误。

它提供错误:Lambda.Unknown原因:无法确定原因,因为Lambda未返回错误类型。

我的lambda函数调用外部webservice。我不想等到收到webservice响应。

我们可以在不等待webservice响应的情况下从函数返回数据吗?

我的Lambda函数

var http = require('http');
exports.handler = (event, context, callback) => {

    var inputJson= {};

    inputJson.firstname= event.firstname; 
    inputJson.lastname= event.lastname;
    inputJson.workspacename= event.workspacename;
    inputJson.customermailid= event.customermailid;
    inputJson.mobilenumber= event.mobilenumber;
    inputJson.orgname= event.orgname;

    inputJson.sessionid= event.sessionid;

    var post_data = JSON.stringify({
        "domainname" : inputJson.domainname,
        "orgname" : inputJson.orgname,
        "customermailid" : inputJson.customermailid,
        "adminmailid":"postmaster@test.int",
        "product":3
    });

  // An object of options to indicate where to post to
  var post_options = {
      host: 'host_ip',
      path: 'path',
      method: 'POST',
      headers: {
          'Content-Type': 'application/json'
      }
  };

  // Set up the request
  var post_req = http.request(post_options, function(res) {
      res.setEncoding('utf8');

  });

   post_req.on('error', function (event) {
          console.log('Response: Error=' + event);
          callback(null, inputJson);
   });

  // post the data
  post_req.write(post_data);
  post_req.end();

  callback(null, inputJson);

};

2 个答案:

答案 0 :(得分:1)

您可以,但它可能无法提供您期望的结果。特别是你的帖子错误处理。但是,如果您希望Lambda返回而不等待您的帖子回复。您可以设置:context.callbackWaitsForEmptyEventLoop = false

答案 1 :(得分:0)

以下仅回答上述问题:错误:Lambda。未知原因:由于Lambda未返回错误类型,因此无法确定原因。




  

标准工作流程可确保每个工作流程步骤仅执行一次,最长持续时间为一年。

这来自 Step function 文档。这意味着您调用 Lambda函数的步骤的超时时间将近1年。而如果您看到 Lambda函数,则有一个超时选项。

现在,如果您的lambda函数超时,请说 X秒,而 Lambda函数的任务将花费超过 X秒那么您的lambda将超时,并且不会将任何响应返回给 Step函数。这也会产生您提到的上述错误!

但是我相信您已经知道这些,因为已经2年零6个月了....:v:v