更新:从“地图状态”步骤模板创建一个步骤函数并运行,这也会引发错误。有力的证据证明MaxConcurrency
属性和Parameters
值不起作用。
我无法在步进函数定义中成功使用MaxConcurrency
属性。
这可以通过使用documentation中提供的Map Task示例来证明(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
}
}
}
通过使用以下输入执行步进功能:
[
{
"who": "bob"
},
{
"who": "meg"
},
{
"who": "joe"
}
]
我们可以在执行事件历史中观察到:
ExecutionStarted
MapStateEntered
MapStateStarted
MapIterationStarted
(索引0)MapIterationStarted
(索引1)PassStateEntered
(索引0)PassStateExited
(索引0)MapIterationSucceeded
(索引0)ExecutionFailed
步进功能失败。
ExecutionFailed
步骤具有以下输出(省略执行ID):{
"error": "States.Runtime",
"cause": "Internal Error (omitted)"
}
尝试使用“捕获”步骤捕获错误没有任何效果。
我在这里做错了什么?这是一个错误吗?
最佳答案
对今天早上提交给AWS的私人机票的回应;
感谢您联系AWS Premium支持。我叫阿寒喀什,
在这种情况下,我将协助您。
我了解您一直在使用新的地图状态功能
的步函数,并注意到当我们在
MaxConcurrency设置为低于迭代次数的值
(只有第一次迭代成功)会失败,并显示“ States.Runtime”
并且看起来像是该功能的错误。
感谢您提供详细信息。它对我有帮助
故障排除。为了确认行为,我使用了以下内容
Pass的状态机示例:
{
“ StartAt”:“地图状态”,
“超时时间”:3600,
“状态”: {
“地图状态”:{
“类型”:“地图”,
“参数”:{
“ ContextValue。$”:“ $$。Map.Item.Value”
},
“ MaxConcurrency”:1
“迭代器”:{
“ StartAt”:“运行任务”,
“状态”: {
“运行任务”:{
“类型”:“通过”,
“结束”:true
}
}
},
“下一个”:“最终状态”
},
“最终状态”:{
“类型”:“通过”,
“结束”:true
}
}}
我测试了多个输入列表和MaxConcurrency值及以下
是我的观察:
输入大小列表:4 MaxConcurrency:1/2/3-失败,MaxConcurrency:0/4/5或更高版本-有效
输入大小列表:3 MaxConcurrency:1/2-失败,并且MaxConcurrency:0/3/4或以上-有效
同样,我也通过从状态机中删除参数来执行测试,并且可以看到它在不同的情况下都可以正常工作
MaxConcurrency值。
我还通过将任务类型的“通过”更改为“ Lambda”进行了测试,并观察到相同的行为。
因此,我可以确认当我们有
代码中的参数,并将MaxConcurrency值指定为任何值
大于零或大于或等于列表大小的数字。
在对此行为进行了一些研究之后,检查这是否是
意图,我找不到与此有关的太多信息
是一项新功能。因此,我将与
所有详细信息以及您提供的示例状态机。
感谢您将此通知我们。我会尽快回复您
我有内部团队的最新消息。请放心
我会定期跟进团队并与他们合作
进一步调查。
同时,如果您还有其他疑问或疑虑,请让我
知道。
祝您有美好的一天!
当我获得更多信息时,我将在这里更新。