簡體   English   中英

MaxConcurrency 屬性如何適用於 AWS Step Functions 中的 Map 任務?

[英]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 值進行了測試,以下是我的觀察結果:

  1. 輸入大小列表:4 MaxConcurrency:1/2/3 - 失敗和 MaxConcurrency:0/4/5 或以上 - 有效
  2. 輸入大小列表:3 MaxConcurrency:1/2 - 失敗和 MaxConcurrency:0/3/4 或以上 - 有效
  3. 同樣,我也通過從 state 機器中刪除參數來執行測試,並且可以看到它在不同的 MaxConcurrency 值下按預期工作。
  4. 我還通過將“Pass”的任務類型更改為“Lambda”進行了測試,並觀察到了相同的行為。

因此,我可以確認 state 機器在代碼中有參數並將 MaxConcurrency 值指定為非零或大於或等於列表大小的數字時失敗。

在對這種行為進行了一些研究以檢查這是否是有意的之后,我找不到太多關於此行為的信息,因為這是一項新功能。 因此,我將與您提供的所有詳細信息和示例 state 機器聯系內部團隊。 感謝您通知我們。 收到內部團隊的最新消息后,我會盡快與您聯系。 請放心,我會定期跟進團隊並與他們合作進一步調查。

同時,如果您有任何其他疑問或疑慮,請告訴我。

祝您有美好的一天!

當我得到更多信息時,我會在這里更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM