【问题标题】:Lambda function won't run in parallel via Statemachine step functionsLambda 函数不会通过 Statemachine 步进函数并行运行
【发布时间】:2022-01-18 17:03:14
【问题描述】:

我确定我缺少一些基本信息,但我的设置如下:

我有 1 个 lambda 函数和 2 个状态机。 每个状态机依次调用相同的 lambda 函数两次(调用之间暂停 30 秒) 然后我设置规则以每分钟触发状态机。下面是我的每个状态机的样子,每个 lambda 调用都是针对同一个函数的。

每个状态机都将不同的参数传递给 lambda 函数,因此我试图达到这样一种情况,即我的 Lambda 函数每 30 秒调用一次,并使用一组参数(来自状态机 1),并且调用相同的 lambda 函数每 30 秒使用一组不同的参数(通过状态机 2)。

查看 lambda 函数日志,状态机似乎不会运行 lambda 函数,直到另一个状态机完成其整个执行(即调用 lambda 函数两次)。我希望这两个状态机将彼此独立运行,并且它们之间不会有时间依赖性?

是否有一些限制,因为它们都调用相同的 lambda 函数?还是有一些设置问题,或者这就是它的工作原理?

谢谢!

【问题讨论】:

    标签: aws-lambda aws-step-functions


    【解决方案1】:

    来自documetation

    当您调用 Lambda 函数时,执行将等待函数完成。但是,可以使用 InvocationType 参数异步调用 Lambda,如下例所示

    为避免等待一个Lambda 函数结束并继续执行您的步进函数,您必须在参数中将InvocationType 设置为Event。但是,如果您的 Lambda 函数彼此完全独立,则使用 Parallel 执行类型可能是您更好的选择。

    {
      "Comment": "Parallel Example.",
      "StartAt": "LookupCustomerInfo",
      "States": {
        "LookupCustomerInfo": {
          "Type": "Parallel",
          "End": true,
          "Branches": [
            {
             "StartAt": "LookupAddress",
             "States": {
               "LookupAddress": {
                 "Type": "Task",
                 "Resource":
                   "arn:aws:lambda:us-east-1:123456789012:function:AddressFinder",
                 "End": true
               }
             }
           },
           {
             "StartAt": "LookupPhone",
             "States": {
               "LookupPhone": {
                 "Type": "Task",
                 "Resource":
                   "arn:aws:lambda:us-east-1:123456789012:function:PhoneFinder",
                 "End": true
               }
             }
           }
          ]
        }
      }
    }
    

    【讨论】:

    • 我认为当您希望 lambda 函数在同一个 step 函数中并行运行时,需要这种设置。我指的是两个并行运行的状态机——那还需要不同的调用类型吗?
    • 如果我将调用类型更改为事件,那么我的步进函数将不会等待 lambda 完成。我不想要那个。我希望它等待,然后才执行第二个功能。但我不想要一个不同的状态机等待这个完成
    • 好吧,看来你是对的。即使我希望调用类型仅在状态机内相关。看起来它也成为了其他状态机的拦截器?
    猜你喜欢
    • 2017-11-25
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 2022-01-24
    相关资源
    最近更新 更多