使用 Step Functions 繼續長時間執行的工作流程 API (建議) - AWS Step Functions

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

使用 Step Functions 繼續長時間執行的工作流程 API (建議)

AWS Step Functions 旨在以有限的持續時間和步驟數來執行工作流程。標準工作流程執行的最長持續時間為一年和 25,000 個事件 (請參閱Step Functions 服務配額)。

對於長時間執行的執行,您可以從狀態開始新的工作流程執行,以避免到達硬配額。Task您需要將工作流程分解為較小的狀態機器,以便在新的執行中繼續進行中的工作。

若要啟動新的工作流程執行,您將從您的Task狀態呼叫StartExecutionAPI動作,並傳遞必要的參數。

Step Functions 可以通過調用自己的作API為一個集成的服務啟動工作流執行。我們建議您使用此方法來避免長時間執行的執行超出服務配額。

步驟 1:建立長時間執行的狀態機

建立要從不同狀態機器狀態啟動的長時間執行Task狀態機器。在本教學課程中,請使用使用 Lambda 函數的狀態機器

注意

請務必將此狀態機器的名稱和 Amazon 資源名稱複製到文字檔中,以供日後使用。

步驟 2:建立狀態機以呼叫 Step Functions API 動作

若要從狀態啟動工作流程執行 Task
  1. 開啟 Step Functions 主控台,然後選擇建立狀態機器

  2. 在「選擇範本」對話方塊中,選取「空白」。

  3. 選擇選以在中開啟工作流程工作室設計模式

  4. 從「動」標籤中,將StartExecutionAPI動作拖放至標示為「拖曳第一個狀態」的空白狀態

  5. 選擇狀StartExecution態,然後在中的「組態」索引標籤中執行下列動作設計模式

    1. 將狀態重新命名為Start nested execution

    2. 針對「整合類型」,選擇 AWS SDK- 從下拉列表中新的。

    3. API參數中,執行下列操作:

      1. 對於StateMachineArn,請將範例 Amazon 資源名稱取代為狀態機器ARN的。例如,輸入使用 Lambda ARN 的狀態機器

      2. 若為Input節點,請使用下列值取代現有的預留位置文字:

        "Comment": "Starting workflow execution using a Step Functions API action"
      3. 確保您在API參數中的輸入看起來類似於以下內容:

        { "StateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:LambdaStateMachine", "Input": { "Comment": "Starting workflow execution using a Step Functions API action", "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" }
  6. (選擇性) 選擇檢查器面板面板上的「定義」,以檢視工作流程的自動產生 Amazon States Language (ASL) 定義。

    提示

    您也可以檢視工作流程工作室中程式碼編輯器的ASL定義。在程式碼編輯器中,您也可以編輯工作流程的ASL定義。

  7. 指定狀態機的名稱。若要執行此操作,請選擇的預設狀態機器名稱旁邊的編輯圖示MyStateMachine。然後,在 [狀態機器組態] 中,在 [狀態機器名稱] 方塊中指定名稱

    針對本教學課程,輸入名稱 ParentStateMachine

  8. (選擇性) 在狀態機器組態中,指定其他工作流程設定,例如狀態機器類型及其執行角色。

    在本教學課程中,請保留狀態機器設定中的所有預設選項。

    如果您先前已建立具有狀態機器正確權限的IAM角色,並想要使用它,請在 [權限] 中選取 [選擇現有角色],然後從清單中選取角色。或選取 [輸入角色],ARN然後ARN為該IAM角色提供。

  9. 在 [確認角色建立] 對話方塊中,選擇 [確認] 以繼續。

    您也可以選擇 [檢視角色設定] 以返回 [狀態機器組態]。

    注意

    如果刪除 Step Functions 所建立的IAM角色,則 Step Functions 稍後無法重新建立。同樣地,如果您修改角色 (例如,從原則中的主參與者中移除 Step Functions),IAM則 Step Functions 稍後無法還原其原始設定。

步驟 3:更新政IAM策

為了確保您的狀態機具有開始執行使用 Lambda 函數的狀態機器的權限,您需要將內嵌政策附加到狀態機的IAM角色。如需詳細資訊,請參閱IAM使用指南中的內嵌內嵌政策

  1. ParentStateMachine頁面上,選擇ARN要導覽至狀態機器之「IAM角色」頁面的角色。IAM

  2. 將適當的權限指派給的IAMParentStateMachine角色,讓它能夠開始執行另一個狀態機器。若要指派權限,請執行下列動作:

    1. 在 [IAM角色] 頁面上,選擇 [新增權限],然後選擇 [建立內嵌原則]。

    2. 在 [建立原則] 頁面上,選擇索JSON引標籤。

    3. 以下列原則取代現有的文字。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:us-east-2:123456789012:stateMachine:LambdaStateMachine" ] } ] }
    4. 選擇檢閱政策

    5. 指定策略的名稱,然後選擇 [建立策略]。

步驟 4:運行狀態機

狀態機器執行是執行工作流程以執行工作的執行個體。

  1. ParentStateMachine頁面上,選擇 [開始執行]。

    此時會顯示「開始執行」對話方塊。

  2. 在 [開始執行] 對話方塊中,執行下列動作:

    1. (選擇性) 輸入自訂執行名稱,以覆寫產生的預設值。

      非ASCII名稱和記錄

      Step Functions 接受包含非ASCII字元的狀態機器、執行項目、活動和標籤的名稱。由於此類字元不適用於 Amazon CloudWatch,因此我們建議您僅使用ASCII字元,以便在中追蹤指標 CloudWatch。

    2. (選擇性) 在「入」方塊中,以JSON格式輸入輸入值以執行工作流程。

    3. 選擇 Start execution (開始執行)

    4. 「Step Functions」主控台會將您引導至標題為執行 ID 的頁面。此頁面稱為「執行詳細資訊」頁面。在此頁面上,您可以在執行進行時或完成之後複查執行結果。

      若要複查執行結果,請在「圖形」檢視中選擇個別狀態,然後選擇步驟詳情窗格上的個別索引標籤,分別檢視每個狀態的詳細資訊,包括輸入、輸出和定義。如需有關可在「執行詳細資訊」頁面檢視之執行資訊的詳細資訊,請參閱執行細節概述

  3. 開啟LambdaStateMachine頁面,並注意由觸發的新執行ParentStateMachine