簡體   English   中英

aws step 函數流中的最后一個狀態是否可以包含 catch 語句?

[英]can the last state in a aws step function flow contain a catch statement?

我有一個步驟函數編排流程,我想使用 catch 字段在某些狀態下進行錯誤處理。 但是,catch 字段需要 Next 賦值,因此如果我希望我的 step 函數運行,我無法在我的最后一個狀態中包含 catch 字段。

我想在流的最后一個狀態有一個 catch 字段,但我想知道在最后一個狀態有一個 catch 語句是否是一個好習慣。 當我引入結束狀態時,例如 Type:Succeed 狀態,stepfunction 可以運行。 但是這個解決方案感覺有點hacky。

我試圖將 catch 字段中 Next 的值設置為 End。 但是在嘗試更新堆棧時在 cloudformation 中拋出了這個錯誤。

資源處理程序返回消息:“無效狀態機定義:'MISSING_TRANSITION_TARGET:缺少'下一個'目標:EndState at /States/last_jobs/Branches[0]/States/last_state/Catch[0]/Next'(服務:AWSStepFunctions;狀態代碼:400;錯誤代碼:InvalidDefinition;代理:null)”(HandlerErrorCode:InvalidRequest)

Catch 的目的是讓您可以告訴 Step Functions 采取不同的操作來響應失敗(重試后),因為默認行為將使執行失敗。 該操作需要在工作流中捕獲,因此需要 this 指向描述該操作的另一個狀態。

我不是 100% 確定你希望用這個 catch 塊完成什么,但我懷疑它是以下情況之一。

如果您希望采取進一步的行動來補償,那么您需要將其添加到您的工作流程中(例如,另一個任務或重新進入現有流程的等待狀態)。

如果您希望提供特定的失敗原因和/或錯誤,而不是您從任務失敗中獲得的默認值,那么您將需要具有這些細節的失敗狀態。 並將其設置為您的 Catch 的下一步。

如果您希望忽略此任務失敗並成功完成工作流,那么您需要一個成功狀態,您可以為您的 Catch 指定為下一步。

暫無
暫無

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

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