更新:从地图状态步骤模板创建步骤函数并运行,这也会引发错误。有力的证据表明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)"
}
尝试通过“捕获”步骤捕获错误没有效果。
我在这里做错了什么?这是错误吗?
答案 0 :(得分:1)
回应今天早上提交给AWS的私人机票;
感谢您与AWS Premium支持联系。我叫阿寒喀什, 在这种情况下,我将协助您。
我了解您一直在使用新的地图状态功能 的步函数,并注意到当我们使用参数 MaxConcurrency设置为低于迭代次数的值 (只有第一次迭代成功),失败的状态是“ States.Runtime” 并且看起来像是该功能的错误。
感谢您提供详细信息。它对我有帮助 故障排除。为了确认行为,我使用了以下内容 Pass的状态机示例:
{ “ StartAt”:“地图状态”, “超时时间”:3600, “状态”: { “地图状态”:{ “ Type”:“地图”, “参数”:{ “ 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值指定为任何值 大于零或大于或等于列表大小的数字。
在对此行为进行了一些研究之后,检查这是否是 意向,我找不到与此有关的太多信息 是一项新功能。因此,我将与 所有详细信息以及您提供的示例状态机。 感谢您将此通知我们。我会尽快回复您 我有内部团队的最新消息。请放心 我会定期跟进团队并与他们合作 进一步调查。
同时,如果您还有其他疑问或疑虑,请让我 知道。
祝您有美好的一天!
获得更多信息后,我将在这里更新。