重新啟動狀態機執行 redrive 在 Step Functions 中 - AWS Step Functions

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

重新啟動狀態機執行 redrive 在 Step Functions 中

您可以使用...redrive 重新啟動過去 14 天內未成功完成的標準工作流程的執行。其中包括失敗、中止或逾時的執行。

當你 redrive 執行時,從失敗的步驟繼續失敗的執行,並使用相同的輸入。Step Functions 保留成功步驟的結果和執行歷史記錄,這些步驟在您時不會重新執行 redrive 執行。例如,假設您的工作流程包含兩種狀態:一個「傳遞」工作流狀態後跟一個工作流程狀態狀態。如果您的工作流程執行在 [工作] 狀態失敗,且您 redrive 執行時,執行會重新排程,然後重新執行 Task 狀態。

Redriven 執行使用與原始執行嘗試相同ARN的狀態機器定義和執行。如果您原始的執行嘗試與版本別名或兩者相關聯,則 redriven 執行與相同的版本,別名或兩者相關聯。即使您將別名更新為指向其他版本,redriven 執行會繼續使用與原始執行嘗試相關聯的版本。因為 redriven 執行使用相同的狀態機器定義,如果更新狀態機定義,則必須啟動新的執行。

當你 redrive 執行時,狀態機器層級逾時 (如果已定義) 會重設為 0。如需狀態機器層級逾時的詳細資訊,請參閱TimeoutSeconds

執行 redrives 被視為狀態轉換。有關狀態轉換如何影響計費的詳細資訊,請參閱 Step Functions 定價

Redrive 未成功執行的資格

你可以 redrive 如果您的原始執行嘗試符合以下條件,則執行:

  • 您在 2023 年 11 月 15 日或之後開始執行。您在此日期之前開始的執行不符合資格 redrive.

  • 執行狀態不是SUCCEEDED

  • 工作流程執行未超過 redrivable 14 天的期限。Redrivable 期間是指您可以在此期間的時間 redrive 給定的執行。此期間從狀態機完成其執行之日開始。

  • 工作流程執行未超過一年的開啟時間上限。如需狀態機器執行配額的相關資訊,請參閱與狀態機器執行相關的配額

  • 執行事件歷史記錄計數小於 24,999。Redriven 執行追加他們的事件歷史記錄到現有的事件歷史記錄。請確定您的工作流程執行包含少於 24,999 個事件,以容納ExecutionRedriven歷史記錄事件和至少一個其他歷史記錄事件。

Redrive 個別狀態的行為

根據工作流程中失敗的狀態,redrive 所有不成功狀態的行為各不相同。下表說明 redrive 所有狀態的行為。

州名 Redrive 執行行為
「傳遞」工作流

如果前面的步驟失敗或狀態機器逾時,則「通過」狀態將退出,並且不會在 redrive.

工作流程狀態

排程並再次啟動「工作」狀態。

當你 redrive 重新執行「工作」狀態的執TimeoutSeconds行,如果已定義,則會重設為 0。如需逾時的詳細資訊,請參閱工作狀態

選擇工作流狀態 重新評估「選擇」狀態規則。
等待工作流程狀

如果狀態指TimestampPathTimestamp或指向過去的時間戳,redrive 導致「等待」狀態退出,並進入在Next欄位中指定的狀態。

成功工作流狀態

不 redrive 進入「成功」狀態的狀態機器執行。

失敗的工作流程

重新進入「失敗」狀態,然後再次失敗。

平行工作流狀態

重新排程和 redrives 只有那些失敗或中止的分支。

如果狀態因為States.DataLimitExceeded錯誤而失敗,則會重新執行「平行」狀態,包括在原始執行嘗試中成功的分支。

內聯映射狀態

重新排程和 redrives 只有那些失敗或中止的迭代。

如果狀態因為States.DataLimitExceeded錯誤而失敗,則會重新執行內嵌對應狀態,包括在原始執行嘗試中成功的反覆項目。

分散式地圖狀態

redrives 在 Map R un 中不成功的子工作流程執行。如需詳細資訊,請參閱Redriving 在 Step Functions 執行映射運行

如果狀態因為States.DataLimitExceeded錯誤而失敗,則會重新執行「分散式貼圖」狀態。這包括在原始執行嘗試中成功的子工作流程。

IAM許可 redrive 一個執行

Step Functions 需要適當的權限 redrive 執行。下列IAM原則範例授與狀態機器所需的最低權限 redriving 執行。記得更換 italicized 包含資源特定資訊的文字。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:RedriveExecution" ], "Resource": "arn:aws:states:us-east-2:123456789012:execution:myStateMachine:*" } ] }

有關您需要的權限示例 redrive a 地圖運行,請參閱IAM政策範例 redriving 分佈式地圖

Redriving 控制台中的執行

你可以 redrive 符合資格的執行 Step Functions 控制台。

例如,假設您執行狀態機器且 parallel 狀態無法執行。

下圖顯示了 Lambda 在平行狀態中叫用名為 Do 平方數步驟已傳回失敗。這也會導致平行狀態失敗。執行中或未啟動的分支會停止,且狀態機器執行失敗。

失敗狀態機器執行的範例圖表。
到 redrive 從控制台執行
  1. 開啟 Step Functions 主控台,然後選擇執行失敗的現有狀態機器。

  2. 在狀態機器詳細資料頁面的 [執行項目] 下,選擇失敗的執行執行個體。

  3. 選擇 Redrive.

  4. 中Redrive」對話方塊中,選擇 Redrive 執行

    提示

    如果您位於失敗執行的 [執行詳細資料] 頁面上,請執行下列其中一項:redrive 執行:

    • 選擇恢復,然後選擇 Redrive 從失敗

    • 選擇「動作」,然後選取 Redrive.

    請注意,redrive 使用相同的狀態機定義和ARN. 它會從原始執行嘗試中失敗的步驟繼續執行執行。在此範例中,它是「平行」狀態內的「方數」步驟和「等待 3 秒」分支。在「行」狀態下重新啟動執行這些不成功的步驟之後,redrive 將繼續執行「成」步驟。

  5. 選擇執行項目以開啟「執行項目詳細資訊」頁面

    在此頁面上,您可以檢視 redriven 執行。例如,在該執行摘要部分中,您可以看到 Redrive 計數,代表執行的次數 redriven。 在「事件」區段中,您可以看到 redrive 相關執行事件會附加至原始執行嘗試的事件。例如,ExecutionRedriven事件。

Redriving 執行使用 API

你可以 redrive 符合資格的執行項目使用 RedriveExecutionAPI. 這會從失敗、中止或逾時的步驟中API重新啟動標準工作流程的失敗執行。

在 AWS Command Line Interface (AWS CLI),執行下列命令 redrive 不成功的狀態機器執行。記得更換 italicized 包含資源特定資訊的文字。

aws stepfunctions redrive-execution --execution-arn arn:aws:states:us-east-2:123456789012:execution:myStateMachine:foo

檢查 redriven 處決

您可以檢查 redriven 在控制台中執行或使用APIs:GetExecutionHistoryDescribeExecution

檢查 redriven 控制台上的執行
  1. 開啟 Step Functions 主控台,然後選擇現有的狀態機器 redriven 執行。

  2. 開啟「執行詳細資訊」頁面。

    在此頁面上,您可以檢視 redriven 執行。例如,在該執行摘要部分中,您可以看到 Redrive 計數,代表執行的次數 redriven。 在「事件」區段中,您可以看到 redrive 相關執行事件會附加至原始執行嘗試的事件。例如,ExecutionRedriven事件。

檢查 redriven 執行使用 APIs

如果你有 redriven 狀態機執行時,您可以使用下列其中一項APIs來檢視有關 redriven 執行。記得更換 italicized 包含資源特定資訊的文字。

  • GetExecutionHistory — 以事件清單形式傳回指定執行的歷史記錄。這API也會傳回有關的詳細資訊 redrive 嘗試執行(如果可用的話)。

    在 AWS CLI,執行下列命令。

    aws stepfunctions get-execution-history --execution-arn arn:aws:states:us-east-2:123456789012:execution:myStateMachine:foo
  • DescribeExecution — 提供有關狀態機器執行的資訊。這可以是與執行,執行輸入和輸出,執行相關的狀態機 redrive 詳細資料 (如果有) 以及相關的執行中繼資料。

    在 AWS CLI,執行下列命令。

    aws stepfunctions describe-execution --execution-arn arn:aws:states:us-east-2:123456789012:execution:myStateMachine:foo

的重試行為 redriven 處決

如果您的 redriven 執行會重新執行工作流程狀態平行工作流狀態、或 Inline Map 狀態 (您已針對其定義重試),這些狀態的重試嘗試次數會重設為 0,以允許嘗試次數上限 redrive。 對於一個 redriven 執行時,您可以使用控制台跟踪這些狀態的個別重試嘗試。

檢查主控台中的個別重試嘗試
  1. Step Functions 主控台的 [執行詳細資訊] 頁面上,選擇重試的狀態 redrive.

  2. 選擇重試次數和 redrives標籤。

  3. 選擇每次重試嘗試旁邊的箭頭圖示,以檢視其詳細資訊。如果重試嘗試成功,您可以在「輸出」(Output) 中檢視出現在下拉式方塊中的結果。

下列影像顯示針對原始執行嘗試中的狀態執行重試的範例,以及 redrives 的執行。在此影像中,會以原始影像執行三次重試,redrive 執行嘗試。第四次執行成功 redrive 嘗試並返回 16 的輸出。

說明性的螢幕擷取畫面顯示三次失敗的重試和第四次重試的成功。