[英]AWS Step Function - Dynamic parallelism MaxConcurrency Field
[英]How does the MaxConcurrency attribute work for the Map Task in AWS Step Functions?
更新:从Map State步骤模板创建步骤 function 并运行也会引发错误。 这是MaxConcurrency
属性和Parameters
值不起作用的有力证据。
我无法在步骤 function 定义中成功使用MaxConcurrency
属性。
这可以通过使用 Map 任务文档中提供的示例(自 2019 年 9 月 18 日起新增)来演示:
{
"StartAt": "ExampleMapState",
"States": {
"ExampleMapState": {
"Type": "Map",
"MaxConcurrency": 2,
"Parameters": {
"ContextIndex.$": "$$.Map.Item.Index",
"ContextValue.$": "$$.Map.Item.Value"
},
"Iterator": {
"StartAt": "TestPass",
"States": {
"TestPass": {
"Type": "Pass",
"End": true
}
}
},
"End": true
}
}
}
通过使用以下输入执行步骤 function:
[
{
"who": "bob"
},
{
"who": "meg"
},
{
"who": "joe"
}
]
我们可以在我们得到的Execution 事件历史记录中观察到:
ExecutionStarted
MapStateEntered
MapStateStarted
MapIterationStarted
(索引 0)MapIterationStarted
(索引 1)PassStateEntered
(索引 0)PassStateExited
(索引 0)MapIterationSucceeded
(索引 0)ExecutionFailed
步骤 function 失败。 ExecutionFailed
步骤具有以下 output(省略执行 ID):
{
"error": "States.Runtime",
"cause": "Internal Error (omitted)"
}
尝试使用 Catch 步骤捕获错误无效。
我在这里做错了什么? 这是一个错误吗?
对今天早上提交给 AWS 的私人票据的回应;
感谢您联系 AWS 高级支持。 我的名字是 Akanksha,我将协助您处理此案。
我了解您一直在使用新的 Map state 功能的阶跃函数,并注意到当我们使用参数以及将 MaxConcurrency 设置为低于迭代次数的值(只有第一次迭代成功)时,它会因“States.Runtime”而失败' 并且看起来像功能的错误。
感谢您提供详细信息。 它在故障排除期间帮助了我。 为了确认行为,我使用了下面的 state 机器示例和 Pass:
{ "StartAt": "Map State", "TimeoutSeconds": 3600, "States": { "Map State": { "Type": "Map", "Parameters": { "ContextValue.$": "$$. Map.Item.Value" }, "MaxConcurrency": 1, "Iterator": { "StartAt": "Run Task", "States": { "Run Task": { "Type": "Pass", "End" : true } } }, "Next": "Final State" }, "Final State": { "Type": "Pass", "End": true } } }
我使用多个输入列表和 MaxConcurrency 值进行了测试,以下是我的观察结果:
- 输入大小列表:4 MaxConcurrency:1/2/3 - 失败和 MaxConcurrency:0/4/5 或以上 - 有效
- 输入大小列表:3 MaxConcurrency:1/2 - 失败和 MaxConcurrency:0/3/4 或以上 - 有效
- 同样,我也通过从 state 机器中删除参数来执行测试,并且可以看到它在不同的 MaxConcurrency 值下按预期工作。
- 我还通过将“Pass”的任务类型更改为“Lambda”进行了测试,并观察到了相同的行为。
因此,我可以确认 state 机器在代码中有参数并将 MaxConcurrency 值指定为非零或大于或等于列表大小的数字时失败。
在对这种行为进行了一些研究以检查这是否是有意的之后,我找不到太多关于此行为的信息,因为这是一项新功能。 因此,我将与您提供的所有详细信息和示例 state 机器联系内部团队。 感谢您通知我们。 收到内部团队的最新消息后,我会尽快与您联系。 请放心,我会定期跟进团队并与他们合作进一步调查。
同时,如果您有任何其他疑问或疑虑,请告诉我。
祝您有美好的一天!
当我得到更多信息时,我会在这里更新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.