

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Step Functions でインラインマップステートを使用してアクションを反復する
<a name="tutorial-map-inline"></a>

このチュートリアルでは、インラインモードで `Map` 状態を使用する方法を説明します。ワークフローで、*インラインマップステート*を使用してアクションを繰り返し実行します。インラインモードの詳細については、「[インラインモードのマップステート](state-map-inline.md)」を参照してください。

このチュートリアルでは、*インラインマップステート*を使用して、バージョン 4 の汎用一意識別子 (v4 UUID) を繰り返し生成します。まず、Workflow Studio で 2 つの [Pass ワークフロー状態](state-pass.md) ステートと 1 つの*インラインマップステート*を含むワークフローを作成します。次に、`Map` 状態の入力 JSON 配列を含め、入力と出力を設定します。`Map` 状態は、入力配列内の各項目に対して生成された v4 UUID を含む出力配列を返します。

## ステップ 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. 2 つ目の **[パス]** 状態をドラッグして **[マップデモ]** 状態の中にドロップします。

1. 2 つ目の **[パス]** 状態の名前を **Generate UUID** に変更します。

## ステップ 2: 入力と出力を構成する
<a name="use-inline-map-configure-io"></a>

このステップでは、ワークフロープロトタイプのすべての状態に対する入力と出力を設定します。まず、最初の **[パス]** 状態を使用して、ワークフローに固定データを挿入します。**[パス]** 状態は、このデータを **[マップデモ]** 状態への入力として渡します。この入力の中で、**[マップデモ]** 状態が反復処理する必要がある入力配列を含むノードを指定します。次に、**[マップデモ]** 状態が v4 UUID を生成するために反復する必要があるステップを定義します。最後に、反復するごとに返される出力を構成します。

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. **[Parameters を使用して入力を変換]** を選択します。

   1. 次の JSON 入力を入力して、入力配列の各項目の v4 UUID を生成します。`States.UUID` 組み込み関数を使用して UUID を生成します。

      ```
      {
        "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. (オプション) [インスペクターパネル](workflow-studio.md#workflow-studio-components-formdefinition) パネルの **[定義]** を選択すると、ワークフローの自動生成された Amazon States Language の定義が表示されます。
**ヒント**  
また、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 がデータを記録できなくなるため、Step Functions のメトリクスを追跡できるように ASCII 文字のみを使用することをお勧めします。

   1. (オプション) **[入力]** ボックスに、JSON 形式の入力値を入力してワークフローを実行します。

   1. **[実行のスタート]** を選択します。

   1. Step Functions コンソールから実行 ID のタイトルが付いたページ (*[実行の詳細]* ページ) が表示されます。ワークフローの進行中および完了後に、実行結果を確認できます。

      実行結果を確認するには、**[グラフビュー]** で個々の状態を選択し、[ステップの詳細](concepts-view-execution-details.md#exec-details-intf-step-details) ペインの個々のタブを選択すると、入力、出力、定義などの各状態の詳細がそれぞれ表示されます。*[実行の詳細]* ページに表示できる実行情報の詳細については、「[実行の詳細の概要](concepts-view-execution-details.md#exec-details-interface-overview)」を参照してください。

   実行の入力と出力を並べて表示するには、**[実行の入力と出力]** を選択します。**[出力]** に、`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"
   ]
   ```