当前位置: 首页 > 知识库问答 >
问题:

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

商松
2023-03-14

我正在执行步骤功能。但是,我在执行一种状态时出错。

它给出误差:λ。未知原因:无法确定原因,因为Lambda没有返回错误类型。

我的lambda函数调用外部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个答案

周浩淼
2023-03-14

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

祁凯泽
2023-03-14

下面的答案只回答了上面提到的这个问题:错误:Lambda.未知原因:无法确定原因,因为Lambda没有返回错误类型。

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

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

现在,如果lambda函数有超时,例如X秒,并且lambda函数的任务需要超过X秒,那么lambda将超时,并且不会向Step函数返回任何响应。这也会产生上述错误!

但我相信你已经知道这些了,因为已经过去了2年零6个月……:v:v

 类似资料:
  • 在javascript中,常见的模式是创建匿名函数并立即调用它(通常称为自动执行匿名函数或立即调用的函数表达式)。 对于Java8 lambdas,是否有复制这种行为的标准方法?类似于

  • 运行lambda函数时,我得到一个Boto3无效参数异常。我正试图找到一种方法来处理这个异常。 我遇到了以下解决方案: 我使用的是python3,我知道boto现在已被弃用,并被boto3取代。但我在boto3中找不到等效的解决方案。 有人能帮我解决这个问题吗?

  • 好了,我说完了。请有人帮帮我:( 我不知道js和lambda是怎么工作的 null 最令人困惑的是!这个b给我这个测试结果: 运行1: DynamoDb是空的,这里我们看不到DynamoDb.BatchWriteItem结果的日志。

  • 我真的需要帮助,我在stackoverflow上找到的所有问题中都搜索到了,但没有任何效果。我以前从未使用过hibernate,我不知道自己做错了什么 这是我的存储库:https://github.com/ionutincau/test_db 我收到了这个错误:

  • 我正在使用实现AWS SQS作业队列。正确处理作业(拉作业- PHP工匠队列:工作 但在Lambda环境中,使用相同的凭证,作业完成后不能删除。简而言之,拉作业- “errorType”:“Aws\Sqs\Exception\SQSExException”, “errorMessage”:“在上执行”DeleteMessage“时出错”https://sqs.ap-northeast-1.amaz

  • 问题内容: 在javascript中,存在创建匿名函数并立即调用它的常见模式(通常称为自执行匿名函数或立即调用的函数表达式)。 使用Java 8 lambda,是否有标准方法可以复制此行为?有点像。 这个问题基本上提出了相同的问题,但是对于Java7。我正在明确地寻找使用lambda的构造。 问题答案: 也不是没有声明类型。由于Java是静态类型的语言,并且函数不是一等公民,因此编译器需要知道la

  • 我在使用以下方言创建表时遇到以下错误 “org.hibernate.dialoget.mysqlinoddDialogic”

  • 问题内容: 所以我正在使用boto调用我的lambda函数并测试我的后端。我想异步调用它们。我注意到“ invoke_async”已被弃用,不应使用。相反,您应该将InvocationType与“ Event”的InvocationType一起使用以异步执行该功能。 但是,我似乎无法弄清楚如何从函数中获取响应。我尝试了以下方法: 即使我告诉代码休眠15秒钟,当我尝试打印它时,响应变量仍然为空。如果