使用內嵌對應狀態重複動作 - AWS Step Functions

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

使用內嵌對應狀態重複動作

本教程可幫助您開始在內聯模式下使用Map狀態。您可以在工作流程中使用內嵌對應狀態來重複執行動作。如需有關內嵌模式的詳細資訊,請參閱在內嵌模式中對應狀態

在本教學課程中,您會使用內嵌對應狀態來重複產生第 4 版的通用唯一識別碼 (v4 UUID)。您可以先建立包含兩個Pass狀態和工作流程 Studio 中的內嵌對應狀態的工作流程。然後,您可以設定輸入和輸出,包括Map狀態的輸入 JSON 陣列。該Map狀態返回一個輸出數組,該數組包含為輸入數組中的每個項目生成的 v4 UUID。

步驟 1:建立工作流程原型

在此步驟中,您可以使用工作流程 Studio 建立工作流程的原型。工作流程 Studio 是 Step Functions 控制台中提供的可視化工作流程設計器。您將從 [程] 索引標籤中選擇所需的狀態,並使用工作流程 Studio 的拖放功能來建立工作流程原型。

  1. 開啟 Step Functions 主控台,然後選擇建立狀態機器

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

  3. 選擇選取。這會在設計模式中開啟工作流程工作室

  4. 從「程」索引標籤中,將「處理」狀態拖放至標示為「拖曳第一個狀態」的空白狀態

  5. 將「地」狀態拖曳至「通過」狀態下方。將 [對] 狀態重新命名為Map demo

  6. 拖曳第二個傳遞狀態並將其放入地圖示範狀態內。

  7. 將第二個「通過」狀態重新命名為 Generate UUID

步驟 2:配置輸入和輸出

在此步驟中,您可以為工作流程原型中的所有狀態配置輸入和輸出。首先,您可以使用第一個「通過」狀態將某些固定資料注入工作流程。此通過狀態傳遞這個數據作為輸入到地圖演示狀態。在此輸入中,您可以指定包含地圖演示狀態應迭代輸入數組的節點。然後,您可以定義地圖演示狀態應重複以生成 v4 UUID 的步驟。最後,您可以將輸出設定為每次重複傳回。

  1. 選擇工作流程原型中的第一個「通過」狀態。在「出」頁籤的「結果」下輸入下列內容:

    { "foo": "bar", "colors": [ "red", "green", "blue", "yellow", "white" ] }
  2. 選擇 [對應] 示範狀態,然後在 [設定] 索引標籤中執行下列動作:

    1. 選擇 [提供項目陣列的路徑]。

    2. 指定下列參照路徑,以選取包含輸入陣列的節點:

      $.colors
  3. 選擇「產生 UUID」狀態,然後在「輸入」索引標籤中執行下列動作:

    1. 選擇使用參數轉換輸入

    2. 輸入下列 JSON 輸入,為每個輸入陣列項目產生 v4 UUID。您可以使用States.UUID內建函數來產生 UUID。

      { "uuid.$": "States.UUID()" }
  4. 針對「產生 UUID」狀態,選擇「輸出」索引標籤,然後執行下列動作:

    1. 選擇篩選輸出方式 OutputPath。

    2. 輸入下列參考路徑,以選取包含輸出陣列項目的 JSON 節點:

      $.uuid

步驟 3:檢閱自動產生的 Amazon 州語言定義並儲存工作流程

當您將狀態從「程」面板拖放到畫布上時,工作流程 Studio 會自動即時編寫工作流程的 Amazon 狀態語言 (ASL) 定義。您可以視需要編輯此定義。

  1. (選擇性) 選擇Inspector面板上的「定義」,以檢視自動產生的工作流程 Amazon States 語言定義。

    提示

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

    下列範例顯示為您的工作流程自動產生的 Amazon 狀態語言定義。

    { "Comment": "Using Map state in Inline mode", "StartAt": "Pass", "States": { "Pass": { "Type": "Pass", "Next": "Map demo", "Result": { "foo": "bar", "colors": [ "red", "green", "blue", "yellow", "white" ] } }, "Map demo": { "Type": "Map", "ItemsPath": "$.colors", "ItemProcessor": { "ProcessorConfig": { "Mode": "INLINE" }, "StartAt": "Generate UUID", "States": { "Generate UUID": { "Type": "Pass", "End": true, "Parameters": { "uuid.$": "States.UUID()" }, "OutputPath": "$.uuid" } } }, "End": true } } }
  2. 指定狀態機的名稱。若要執行此操作,請選擇的預設狀態機器名稱旁邊的編輯圖示MyStateMachine。然後,在 [狀態機器組態] 中,在 [狀態機器名稱] 方塊中指定名稱

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

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

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

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

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

    注意

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

步驟 4:運行狀態機

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

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

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

    1. (選擇性) 若要識別您的執行項目,您可以在「名稱」(Name) 方塊中指定執行項目的名稱。依預設,Step Functions 會自動產生唯一的執行名稱。

      注意

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

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

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

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

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

    若要檢視執行輸入和輸出 side-by-side,請選擇執行輸入和輸出。在「輸出」下,檢視由Map狀態傳回的輸出陣列。下面是輸出數組的一個例子:

    [ "a85cbc7b-4e65-4ac2-97af-80ed504adc1d", "b05bca11-d481-414e-aa9a-88285ec6590d", "f42d59f7-bd32-480f-b270-caddb518ce2a", "15f18616-517d-4b69-b7c3-bf22222d2efd", "690bcfee-6d58-408c-a6b4-1995ccafdbd2" ]