选项1:一种方法是使用2个地图状态:
[
[array1] //contains 1000 items,
[array2]
...
[arrayn]
]
- 遍历数组
- 对于里面的数组再次迭代并调用你的 API
- 暂停一小时
这里是大体思路,还有很多改进的空间,比如你可以计算API调用花费了多少时间,然后从等待时间中减去等等。
除了 Map 状态,还可以创建一个带有选择状态的 while 循环并实现相同的目的。
{
"StartAt": "SplitToArayofArrays",
"States": {
"SplitToArayofArrays": {
"Type": "Pass",
"Result": "Hello",
"Next": "IterateFristArray "
},
"IterateFristArray ": {
"Type": "Map",
"ItemsPath": "$.array",
"ResultPath": "$.array",
"MaxConcurrency": 1,
"Next": "Final State",
"Iterator": {
"StartAt": "IterateChildArray",
"States": {
"IterateChildArray": {
"Type": "Map",
"Iterator": {
"StartAt": "IterateChildArray",
"States": {
"IterateChildArray": {
"Type": "Pass",
"Result": "Hello",
"End": true
}
}
},
"Next": "PauseOneHour"
},
"PauseOneHour": {
"Type": "Wait",
"Seconds": 3600,
"End": true
}
}
}
},
"Final State": {
"Type": "Pass",
"End": true
}
}
}
选项 2:一小时内 1000 条记录意味着每 3.6 秒调用一次 API。所以在地图状态下添加一个等待状态3.6秒。