

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

# 使用內嵌映射狀態在 Step Functions 中重複動作
<a name="tutorial-map-inline"></a>

本教學課程可協助您開始使用內嵌模式中`Map`的狀態。您可以在工作流程中使用*內嵌映射狀態*重複執行動作。如需內嵌模式的詳細資訊，請參閱[內嵌模式中的映射狀態](state-map-inline.md)。

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

## 步驟 1：建立工作流程原型
<a name="use-inline-map-create-workflow"></a>

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

1. 開啟 [Step Functions 主控台](https://console.aws.amazon.com/states/home)，從功能表中選擇**狀態機器**，然後選擇**建立狀態機器**。

1. 選擇**從空白建立**。

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

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

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

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

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

## 步驟 2：設定輸入和輸出
<a name="use-inline-map-configure-io"></a>

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

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

   ```
   {
     "foo": "bar",
     "colors": [
       "red",
       "green",
       "blue",
       "yellow",
       "white"
     ]
   }
   ```

1. 選擇**映射示範**狀態，然後在**組態**索引標籤中，執行下列動作：

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

   1. 指定下列[參考路徑](amazon-states-language-paths.md#amazon-states-language-reference-paths)，以選取包含輸入陣列的節點：

      ```
      $.colors
      ```

1. 選擇**產生 UUID** 狀態，然後在**輸入**索引標籤中，執行下列動作：

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

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

      ```
      {
        "uuid.$": "States.UUID()"
      }
      ```

1. 針對**產生 UUID** 狀態，選擇**輸出**索引標籤並執行下列動作：

   1. 選擇**使用 OutputPath 篩選輸出**。

   1. 輸入下列參考路徑，以選取包含輸出陣列項目的 JSON 節點：

      ```
      $.uuid
      ```

## 步驟 3：檢閱並儲存自動產生的定義
<a name="use-inline-map-review-asl-def"></a>

當您從**流程**面板將狀態拖放至畫布時，Workflow Studio 會自動即時編寫工作流程的 [Amazon States Language](concepts-amazon-states-language.md) (ASL) 定義。您可以視需要編輯此定義。

1. （選用） 選擇[Inspector 面板](workflow-studio.md#workflow-studio-components-formdefinition)面板上的**定義**，以檢視工作流程自動產生的 Amazon States 語言定義。
**提示**  
您也可以在 Workflow Studio [程式碼編輯器](workflow-studio.md#wfs-interface-code-editor) 的 中檢視 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
         }
       }
     }
   ```

1. 為您的狀態機器指定名稱。若要這樣做，請選擇 **MyStateMachine** 預設狀態機器名稱旁的編輯圖示。然後，在**狀態機器組態**中，在**狀態機器名稱方塊中指定名稱**。

   針對本教學課程，輸入名稱 **InlineMapDemo**。

1. （選用） 在**狀態機器組態**中，指定其他工作流程設定，例如狀態機器類型及其執行角色。

   在此教學課程中，請將所有預設選擇保留在**狀態機器組態**中。

1. 在**確認角色建立**對話方塊中，選擇**確認**以繼續。

   您也可以選擇**檢視角色設定**以返回**狀態機器組態**。
**注意**  
如果您刪除 Step Functions 建立的 IAM 角色，Step Functions 稍後無法重新建立該角色。同樣地，如果您修改角色 （例如，從 IAM 政策中的主體移除 Step Functions)，Step Functions 稍後無法還原其原始設定。

## 步驟 4：執行狀態機器
<a name="use-inline-map-sm-run"></a>

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

1. 在 **InlineMapDemo** 頁面上，選擇**開始執行**。

1. 在**開始執行**對話方塊中，執行下列動作：

   1. （選用） 輸入自訂執行名稱以覆寫產生的預設值。
**非 ASCII 名稱和記錄**  
Step Functions 接受包含非 ASCII 字元的狀態機器、執行、活動和標籤名稱。由於這類字元會阻止 Amazon CloudWatch 記錄資料，我們建議您僅使用 ASCII 字元，以便您可以追蹤 Step Functions 指標。

   1. （選用） 在**輸入**方塊中，以 JSON 格式輸入值來執行工作流程。

   1. 選擇 **Start execution (開始執行)**。

   1. Step Functions 主控台會引導您前往標題為執行 ID 的頁面，稱為*執行詳細資訊*頁面。您可以在工作流程進行和完成後檢閱執行結果。

      若要檢閱執行結果，請在**圖形檢視**中選擇個別狀態，然後選擇[步驟詳細資訊](concepts-view-execution-details.md#exec-details-intf-step-details)窗格上的個別索引標籤，分別檢視每個狀態的詳細資訊，包括輸入、輸出和定義。如需您可以在執行詳細資訊頁面上檢視之*執行資訊的詳細資訊*，請參閱 [執行詳細資訊概觀](concepts-view-execution-details.md#exec-details-interface-overview)。

   若要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"
   ]
   ```