使用內嵌映射狀態在 Step Functions 中重複動作 - AWS Step Functions

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

使用內嵌映射狀態在 Step Functions 中重複動作

本教學課程可協助您在內嵌模式中開始使用 Map 狀態。您可以在工作流程中使用內嵌映射狀態重複執行動作。如需內嵌模式的詳細資訊,請參閱內嵌模式中的映射狀態

在本教學課程中,您會使用內嵌映射狀態重複產生第 4 版的通用唯一識別碼 (v4 UUID)。首先在工作流程 Studio 中建立包含兩個傳遞工作流程狀態狀態和內嵌映射狀態的工作流程。然後,您可以設定輸入和輸出,包括Map狀態的輸入 JSON 陣列。Map 狀態會傳回輸出陣列,其中包含輸入陣列中每個項目產生的 v4 UUIDs。

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

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

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

  2. 選擇從空白建立

  3. 為您的狀態機器命名,然後選擇繼續在 Workflow Studio 中編輯您的狀態機器。

  4. 流程索引標籤中,拖曳通過狀態,並將其拖放至標示為在此處拖曳第一個狀態的空白狀態

  5. 映射狀態拖放到通過狀態以下。將映射狀態重新命名為 Map demo

  6. 拖曳第二個通過狀態並將其放入映射示範狀態。

  7. 將第二個傳遞狀態重新命名為 Generate UUID

步驟 2:設定輸入和輸出

在此步驟中,您會為工作流程原型中的所有狀態設定輸入和輸出。首先,您會使用第一個通過狀態將一些固定資料插入工作流程。此通過狀態會將此資料做為映射示範狀態的輸入傳遞。在此輸入中,您可以指定包含映射示範狀態應反覆執行之輸入陣列的節點。然後,定義映射示範狀態應重複以產生 v4 UUIDs的步驟。最後,您將輸出設定為針對每個重複傳回。

  1. 選擇工作流程原型中的第一個通過狀態。在輸出索引標籤中,在結果下輸入以下內容:

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

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

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

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

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

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

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

    1. 選擇使用 OutputPath 篩選輸出

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

      $.uuid

步驟 3:檢閱並儲存自動產生的定義

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

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

    提示

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

    下列範例顯示工作流程自動產生的 Amazon States Language 定義。

    { "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. (選用) 輸入自訂執行名稱以覆寫產生的預設值。

      非 ASCII 名稱和記錄

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

    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" ]