Dan*_*son 5 amazon-web-services aws-step-functions
更新:从地图状态步骤模板创建一个步骤函数并运行它也会引发错误。这是强有力的证据表明该MaxConcurrency属性与Parameters值一起不起作用。
我无法MaxConcurrency在步骤函数定义中成功使用该属性。
这可以通过使用地图任务文档中提供的示例(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
}
}
}
Run Code Online (Sandbox Code Playgroud)
通过使用以下输入执行 step 函数:
[
{
"who": "bob"
},
{
"who": "meg"
},
{
"who": "joe"
}
]
Run Code Online (Sandbox Code Playgroud)
我们可以在执行事件历史记录中观察到:
ExecutionStartedMapStateEnteredMapStateStartedMapIterationStarted (索引 0)MapIterationStarted (索引 1)PassStateEntered (索引 0)PassStateExited (索引 0)MapIterationSucceeded (索引 0)ExecutionFailed步进功能失败。该ExecutionFailed步骤具有以下输出(省略了执行 ID):
{
"error": "States.Runtime",
"cause": "Internal Error (omitted)"
}
Run Code Online (Sandbox Code Playgroud)
尝试使用 Catch 步骤捕获错误无效。
我在这里做错了什么?这是一个错误吗?
对今天早上提交给 AWS 的私人票证的回复;
\n\n\n\n\n感谢您联系 AWS 高级支持。我的名字是 Akanksha,\n 我将协助您处理此案。
\n\n据我所知,您一直在使用步骤函数的新映射状态功能\n,并注意到当我们使用参数\n并将MaxConcurrency设置为低于迭代次数\n的值时\n(只有第一次迭代成功)失败并显示 \xe2\x80\x98States.Runtime\xe2\x80\x99\n ,看起来像是功能上的错误。
\n\n感谢您提供详细信息。它在故障排除期间帮助了我。为了确认该行为,我使用了下面的状态机示例和 Pass:
\n\n{\n "StartAt": "地图状态",\n "TimeoutSeconds": 3600,\n "状态": {\n "地图状态": {\n "类型": "地图\xe2\x80\x9d, \n "参数": {\n \xe2\x80\x9cContextValue.$\xe2\x80\x9d: "$$.Map.Item.Value"\n },\n "MaxConcurrency": 1,\n "迭代器": {\n "StartAt": "运行任务",\n "状态": {\n "运行任务": {\n "类型": "通过",\n "结束": true\n }\ n }\n },\n "下一步": "最终状态"\n },\n "最终状态": {\n "类型": "通过",\n "结束": true\n }\n } }
\n\n我使用多个输入列表和 MaxConcurrency 值进行了测试,下面是我的观察结果:
\n\n\n
\n\n- 输入大小列表:4 MaxConcurrency:1/2/3 - 失败,MaxConcurrency:0/4/5 或以上 - 有效
\n- 输入大小列表:3 MaxConcurrency:1/2 - 失败,MaxConcurrency:0/3/4 或以上 - 有效
\n- 同样,我也通过从状态机中删除参数来执行测试,并且可以看到它在不同的 MaxConcurrency 值下按预期工作。
\n- 我还通过使用 \xe2\x80\x9cLambda\xe2\x80\x9d 更改 \xe2\x80\x9cPass\xe2\x80\x9d 的任务类型进行了相同的测试,并观察到相同的行为。
\n因此,我可以确认,当我们在代码中包含参数并将 MaxConcurrency 值指定为除零或大于或等于列表大小的数字之外的任何值时,状态机会失败。
\n\n在对这种行为进行了一些研究以检查这是否是有意的之后,我找不到太多与此相同的信息,因为这是一个新功能。因此,我将联系内部团队,提供\n 您提供的所有详细信息和示例状态机。\n 感谢您告知我们这一点。一旦收到内部团队的最新消息,我会尽快回复您。请放心,我将定期跟进该团队并与他们合作进一步调查。
\n\n同时,如果您有任何其他疑问或疑虑,请告诉我\n。
\n\n祝你有美好的一天!
\n
当我获得更多信息时,我会在这里更新。
\n| 归档时间: |
|
| 查看次数: |
2156 次 |
| 最近记录: |