使用 重新啟動狀態機器執行 redrive 在步驟函數中 - AWS Step Functions

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

使用 重新啟動狀態機器執行 redrive 在步驟函數中

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

當您 redrive 執行, 會從失敗的步驟繼續失敗的執行,並使用相同的輸入。Step Functions 會保留成功步驟的結果和執行歷史記錄,這些步驟不會在您 redrive 執行。例如,假設您的工作流程包含兩個狀態:通過工作流程狀態狀態後跟工作流程狀態狀態。如果您的工作流程執行在任務狀態失敗,而您 redrive 執行,執行會重新排程,然後重新執行任務狀態。

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

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

執行 redrives 會被視為狀態轉換。如需有關狀態轉換如何影響帳單的資訊,請參閱 Step Functions Pricing

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。如需逾時的詳細資訊,請參閱任務狀態

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

如果狀態指定 TimestampTimestampPath 在過去指的是時間戳記,redrive 會結束等待狀態,並進入 Next 欄位指定的狀態。

成功工作流狀態

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

失敗的工作流程

重新輸入失敗狀態並再次失敗。

平行工作流狀態

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

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

內嵌映射狀態

重新排程 和 redrives 只有失敗或中止的反覆運算。

如果狀態因States.DataLimitExceeded錯誤而失敗,則會重新執行內嵌映射狀態,包括在原始執行嘗試中成功的迭代。

分散式映射狀態

redrives Map Run 中的失敗子工作流程執行。如需詳細資訊,請參閱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 Map Run,請參閱 IAM政策範例 redriving 分佈式地圖

Redriving 主控台中的執行

您可以 redrive 來自 的合格執行 Step Functions 主控台。

例如,假設您執行狀態機器,但平行狀態無法執行。

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

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

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

  3. 選擇 Redrive.

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

    提示

    如果您在失敗執行的執行詳細資訊頁面上,請執行下列其中一項操作:redrive 執行:

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

    • 選擇動作 ,然後選擇 Redrive.

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

  5. 選擇執行以開啟執行詳細資訊頁面。

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

Redriving 執行使用 API

您可以 redrive 使用 RedriveExecution 進行合格的執行API。這會從失敗、中止或逾時的步驟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 執行會重新執行 工作流程狀態平行工作流狀態內嵌映射狀態 ,您已定義重試次數,這些狀態的重試次數會重設為 0,以允許 上的最大嘗試次數 redrive。 對於 redriven 執行,您可以使用主控台追蹤這些狀態的個別重試嘗試。

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

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

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

下圖顯示原始執行嘗試中針對 狀態執行的重試範例,以及 redrives 該執行的 。在此映像中,在原始 和 中執行三次重試 redrive 執行嘗試。第四個執行成功 redrive 嘗試並傳回 16 的輸出。

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