Redriving處決 - AWS Step Functions

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

Redriving處決

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

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

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

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

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

Redrive未成功執行的資格

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

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

  • 執行狀態不是SUCCEEDED

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

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

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

Redrive個別狀態的行為

視工作流程中失敗的狀態而定,所有失敗狀態的redrive行為會有所不同。下表說明所有狀態的redrive行為。

州名 Redrive執行行為
Pass

如果前面的步驟失敗或狀態機器逾時,「通過」狀態就會結束,且不會在上redrive執行。

任務狀態

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

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

Choice 重新評估「選擇」狀態規則。
等候

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

Succeed

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

Fail

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

平行

重新排程,並redrives僅重新排程失敗或中止的分支。

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

內聯映射狀態

重新排程並redrives僅重新排程失敗或中止的版序。

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

分散式地圖狀態

redrivesMap R un 中不成功的子工作流程執行。如需詳細資訊,請參閱 Redriving地圖運行

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

執行的 redrive IAM 許可

Step Functions 需要適當的權限redrive來執行。以下 IAM 政策示例授予狀態機執行所需的最低權限。redriving請記住將斜體文本替換為特定於資源的信息。

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

如需 Map Run 所需權限的範例,請參閱分散式地圖的 IAM 政策範例 redriving。redrive

Redriving控制台中的執行

您可以從Step Functions控制台進行redrive合格的執行。

例如,假設下列影像代表狀態機的工作流程圖形。

狀態機器的工作流程圖形,其中包含狀態:「通過」、「平行」、「Lambda呼叫」和「等待」。

想像一下你運行這個狀態機器。下圖顯示狀態機執行的圖形。

失敗狀態機器執行的圖形。在此執行中,名為 D o 平方數的平行狀態分支失敗,導致平行狀態失敗。

如此影像所示,「平行」狀態內名為 D o 方數的「Lambda叫用」步驟傳回錯誤。這會造成「平行」狀態失敗。執行中或未啟動的分支會停止,且狀態機器執行失敗。

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

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

  3. 選擇 Redrive

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

    提示

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

    • 選擇 [復原],然後Redrive從失敗中選取。

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

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

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

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

Redriving使用 API 執行

您可以使用 RedriveExecutionAPI 進行redrive合格的執行。此 API 會從失敗、中止或逾時的步驟重新啟動標準工作流程的失敗執行。

在 AWS Command Line Interface (AWS CLI) 中,執行下列命令以執行不redrive成功的狀態機器。請記住將斜體文本替換為特定於資源的信息。

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

檢查redriven執行

您可以在主控台或使用 API:GetExecutionHistory和檢查redriven執行DescribeExecution

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

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

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

使用 redriven API 檢查執行

如果您已執redriven行狀態機器,則可以使用下列其中一個 API 來檢視有關redriven執行的詳細資料。請記住將斜體文本替換為特定於資源的信息。

  • 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. 選擇每個重試嘗試的 arrow icon 下一個,以檢視其詳細資料。如果重試嘗試成功,您可以在「輸出」(Output) 中檢視出現在下拉式方塊中的結果。

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

redriven任務狀態的重試和redrives選項卡。此索引標籤會顯示在原始執行項目及該執行中進行redrives的三次重試嘗試。第四次redrive嘗試執行成功,並傳回 16 的輸出。