本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 重新啟動狀態機器執行 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 重新執行任務狀態的執行,如果已定義狀態 |
選擇工作流狀態 | 重新評估選擇狀態規則。 |
等待工作流程狀 |
如果狀態指定 |
成功工作流狀態 |
不會 redrive 進入成功狀態的狀態機器執行。 |
失敗的工作流程 |
重新輸入失敗狀態並再次失敗。 |
平行工作流狀態 |
重新排程 和 redrives 只有那些失敗或中止的分支。 如果狀態因 |
內嵌映射狀態 |
重新排程 和 redrives 只有失敗或中止的反覆運算。 如果狀態因 |
分散式映射狀態 |
redrives Map Run 中的失敗子工作流程執行。如需詳細資訊,請參閱Redriving 在 Step Functions 執行映射運行。 如果狀態因 |
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 從主控台執行
-
開啟 Step Functions 主控台
,然後選擇執行失敗的現有狀態機器。 -
在狀態機器詳細資訊頁面的執行 下,選擇失敗的執行執行個體。
-
選擇 Redrive.
-
在 中Redrive 對話方塊,選擇 Redrive 執行。
提示
如果您在失敗執行的執行詳細資訊頁面上,請執行下列其中一項操作:redrive 執行:
-
選擇復原 ,然後選擇 Redrive 從失敗 。
-
選擇動作 ,然後選擇 Redrive.
請注意 redrive 使用相同的狀態機器定義 和 ARN。它會從原始執行嘗試中失敗的步驟繼續執行。在此範例中,這是平行狀態內的 Do 平方數字步驟和等待 3 秒分支。在平行狀態下重新啟動這些失敗步驟的執行後,redrive 將繼續執行完成步驟。
-
-
選擇執行以開啟執行詳細資訊頁面。
在此頁面上,您可以檢視 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: GetExecutionHistory和 DescribeExecution。
檢查 redriven 主控台上的執行
-
開啟 Step Functions 主控台
,然後選擇您已使用的現有狀態機器 redriven 執行。 -
開啟執行詳細資訊頁面。
在此頁面上,您可以檢視 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 執行,您可以使用主控台追蹤這些狀態的個別重試嘗試。
在主控台中檢查個別重試嘗試
-
在 Step Functions 主控台
的執行詳細資訊頁面上,選擇在 上重試的狀態 redrive. -
選擇重試次數和 redrives 索引標籤。
-
選擇每次重試嘗試旁的箭頭圖示,以檢視其詳細資訊。如果重試嘗試成功,您可以在出現在下拉式清單中的輸出中檢視結果。
下圖顯示原始執行嘗試中針對 狀態執行的重試範例,以及 redrives 該執行的 。在此映像中,在原始 和 中執行三次重試 redrive 執行嘗試。第四個執行成功 redrive 嘗試並傳回 16 的輸出。