【问题标题】:Getting Error while executing lambda through step functions通过步进函数执行 lambda 时出错
【发布时间】:2017-11-25 18:38:16
【问题描述】:

我正在执行步进功能。但是,我在执行一种状态时遇到错误。

它给出 error : Lambda.Unknown cause: 无法确定原因,因为 Lambda 没有返回错误类型。

我的 lambda 函数调用外部网络服务。我不想等到收到 web 服务响应。

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

我的 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);

};

【问题讨论】:

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


    【解决方案1】:

    下面只回答了上面提到的这个问题:error : Lambda.Unknown Cause: The cause could not be determined because Lambda did not return an error type.




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

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

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

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

    【讨论】:

      【解决方案2】:

      你可以,但它可能不会给出你期望的结果。尤其是您的帖子错误处理。但是,如果您希望 Lambda 在不等待您的发布响应的情况下返回。可以设置:context.callbackWaitsForEmptyEventLoop = false

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-05
        • 2021-02-22
        • 2016-08-15
        • 1970-01-01
        • 2020-04-04
        • 2020-08-02
        相关资源
        最近更新 更多