使用 Step Functions API 動作繼續新的執行 (建議) - AWS Step Functions

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

使用 Step Functions API 動作繼續新的執行 (建議)

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. (選擇性) 選擇Inspector面板上的「定義」,以檢視工作流程的自動產生 Amazon States Language (ASL) 定義。

    提示

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

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

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

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

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

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

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

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

    注意

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

步驟 3:更新 IAM 政策

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

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

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

    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. (選擇性) 若要識別您的執行項目,您可以在「名稱」(Name) 方塊中指定執行項目的名稱。默認情況下,Step Functions 自動生成一個唯一的執行名稱。

      注意

      Step Functions 允許您為狀態機器,執行和活動以及包含非 ASCII 字符的標籤創建名稱。這些非 ASCII 名稱不適用於 Amazon CloudWatch。若要確保您可以追蹤 CloudWatch 量度,請選擇僅使用 ASCII 字元的名稱。

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

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

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

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

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