排队AWS Step Function执行的最佳方法是什么?

问题描述

我正在通过Node应用程序中的Express路线触发步进功能。此步骤功能与以太坊区块链交互,因此高度异步。如果一次尝试多次,交易也可能失败。

正因为如此,我想将这一步函数的执行排队,但是奇怪的是,似乎没有一种直接的方法

做到这一点的最佳方法是什么?

解决方法

您可以在步功能中使用地图

Step功能提供内置方式,可针对给定数量的项目并行执行或一次执行。下面是一个示例:

"Validate-All": {
  "Type": "Map","InputPath": "$.detail","ItemsPath": "$.shipped","MaxConcurrency": 0,"Iterator": {
    "StartAt": "Validate","States": {
      "Validate": {
        "Type": "Task","Resource": "arn:aws:lambda:us-east-1:123456789012:function:ship-val","End": true
      }
    }
  },"ResultPath": "$.detail.shipped","End": true
}

您需要更改 MaxConcurrency = 1 的值,以便仅执行一次,并且将一直进行直到直到 InputPath 中的项目用完为止。 InputPath 应该是list,您可以在 InputPath 中将项目排队,然后启动状态机。

您可以阅读更多here