本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
重新啟動狀態機執行 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 重新執行「工作」狀態的執 |
選擇工作流狀態 | 重新評估「選擇」狀態規則。 |
等待工作流程狀 |
如果狀態指 |
成功工作流狀態 |
不 redrive 進入「成功」狀態的狀態機器執行。 |
失敗的工作流程 |
重新進入「失敗」狀態,然後再次失敗。 |
平行工作流狀態 |
重新排程和 redrives 只有那些失敗或中止的分支。 如果狀態因為 |
內聯映射狀態 |
重新排程和 redrives 只有那些失敗或中止的迭代。 如果狀態因為 |
分散式地圖狀態 |
redrives 在 Map R un 中不成功的子工作流程執行。如需詳細資訊,請參閱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 地圖運行,請參閱IAM政策範例 redriving 分佈式地圖。
Redriving 控制台中的執行
你可以 redrive 符合資格的執行 Step Functions 控制台。
例如,假設您執行狀態機器且 parallel 狀態無法執行。
下圖顯示了 Lambda 在平行狀態中叫用名為 Do 平方數的步驟已傳回失敗。這也會導致平行狀態失敗。執行中或未啟動的分支會停止,且狀態機器執行失敗。
到 redrive 從控制台執行
-
開啟 Step Functions 主控台
,然後選擇執行失敗的現有狀態機器。 -
在狀態機器詳細資料頁面的 [執行項目] 下,選擇失敗的執行執行個體。
-
選擇 Redrive.
-
在 中Redrive」對話方塊中,選擇 Redrive 執行。
提示
如果您位於失敗執行的 [執行詳細資料] 頁面上,請執行下列其中一項:redrive 執行:
-
選擇恢復,然後選擇 Redrive 從失敗。
-
選擇「動作」,然後選取 Redrive.
請注意,redrive 使用相同的狀態機定義和ARN. 它會從原始執行嘗試中失敗的步驟繼續執行執行。在此範例中,它是「平行」狀態內的「做平方數」步驟和「等待 3 秒」分支。在「平行」狀態下重新啟動執行這些不成功的步驟之後,redrive 將繼續執行「完成」步驟。
-
-
選擇執行項目以開啟「執行項目詳細資訊」頁面
在此頁面上,您可以檢視 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: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 執行會重新執行工作流程狀態平行工作流狀態、或 Inline Map 狀態 (您已針對其定義重試),這些狀態的重試嘗試次數會重設為 0,以允許嘗試次數上限 redrive。 對於一個 redriven 執行時,您可以使用控制台跟踪這些狀態的個別重試嘗試。
檢查主控台中的個別重試嘗試
-
在 Step Functions 主控台
的 [執行詳細資訊] 頁面上,選擇重試的狀態 redrive. -
選擇重試次數和 redrives標籤。
-
選擇每次重試嘗試旁邊的箭頭圖示,以檢視其詳細資訊。如果重試嘗試成功,您可以在「輸出」(Output) 中檢視出現在下拉式方塊中的結果。
下列影像顯示針對原始執行嘗試中的狀態執行重試的範例,以及 redrives 的執行。在此影像中,會以原始影像執行三次重試,redrive 執行嘗試。第四次執行成功 redrive 嘗試並返回 16 的輸出。