[英]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.