Lambda 函数不会通过 Statemachine 步函数并行 运行

Lambda function won't run in parallel via Statemachine step functions

我确定我遗漏了一些基本信息,但我的设置如下:

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

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

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

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

谢谢!

来自documetation

When you invoke a Lambda function, the execution will wait for the function to complete. However, it is possible to call Lambda asynchronously using the InvocationType parameter, as seen in the following example

为避免等待 oneLambda 函数结束并继续您的单步函数,您必须在参数中将 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
           }
         }
       }
      ]
    }
  }
}