

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

# ItemsPath (マップ、JSONPath のみ)
<a name="input-output-itemspath"></a>

**ステートの管理とデータの変換**  
このページは JSONPath に関するものです。Step Functions では最近、ステート管理とデータ変換のために変数と JSONata が追加されました。  
[変数を使用したデータ受け渡し](workflow-variables.md)と [JSONata を使用したデータ変換](transforming-data.md)について説明します。

JSONPath ベースの状態で、 `ItemsPath`フィールドを使用して、`Map`状態に提供される JSON 入力内の配列またはオブジェクトを選択します。デフォルトでは、`Map` 状態は `ItemsPath` を `$` に設定し、これにより入力全体が選択されます。
+  `Map` 状態への入力が JSON 配列の場合、配列内の各項目に対して反復を実行し、その項目を入力として反復に渡します。
+  `Map` 状態への入力が JSON オブジェクトの場合、オブジェクト内のキーと値のペアごとに反復を実行し、そのペアを入力として反復に渡します。

**注記**  
*分散マップ状態*で `ItemsPath` を使用できるのは、ワークフローの前のステートから渡された JSON 入力を使用する場合のみです。

の値は[参照パス](amazon-states-language-paths.md#amazon-states-language-reference-paths)`ItemsPath`でなければならず、そのパスは JSON 配列またはオブジェクトに評価する必要があります。例えば、次の例のように、`Map` 状態への入力に 2 つの配列が含まれている場合について考えてみます。

```
{
  "ThingsPiratesSay": [
    {
      "say": "Avast!"
    },
    {
      "say": "Yar!"
    },
    {
      "say": "Walk the Plank!"
    }
  ],
  "ThingsGiantsSay": [
    {
      "say": "Fee!"
    },
    {
      "say": "Fi!"
    },
    {
      "say": "Fo!"
    },
    {
      "say": "Fum!"
    }
  ]
}
```

この場合、`ItemsPath` で配列を選択して、`Map` 状態の反復処理に使用する配列を指定できます。次のステートマシン定義では `ItemsPath` を使用して入力内の `ThingsPiratesSay` 配列を指定し、`ThingsPiratesSay` 配列内の各項目に対して `SayWord` パス状態の反復処理を実行します。

```
{
  "StartAt": "PiratesSay",
  "States": {
    "PiratesSay": {
      "Type": "Map",
      "ItemsPath": "$.ThingsPiratesSay",
      "ItemProcessor": {
         "StartAt": "SayWord",
         "States": {
           "SayWord": {
             "Type": "Pass",
             "End": true
           }
         }
      },
      "End": true
    }
  }
}
```

ネストされた JSON オブジェクトの場合、 `ItemsPath`を使用して入力内の特定のオブジェクトを選択できます。ネストされた設定データで次の入力を検討してください。

```
{
  "environment": "production",
  "servers": {
    "web": {
      "server1": {"port": 80, "status": "active"},
      "server2": {"port": 8080, "status": "inactive"}
    },
    "database": {
      "primary": {"host": "db1.example.com", "port": 5432},
      "replica": {"host": "db2.example.com", "port": 5432}
    }
  }
}
```

ウェブサーバーオブジェクトを反復処理するには、 `ItemsPath` を に設定します`$.servers.web`。

```
{
  "StartAt": "ProcessWebServers",
  "States": {
    "ProcessWebServers": {
      "Type": "Map",
      "ItemsPath": "$.servers.web",
      "ItemProcessor": {
         "StartAt": "CheckServer",
         "States": {
           "CheckServer": {
             "Type": "Pass",
             "End": true
           }
         }
      },
      "End": true
    }
  }
}
```

入力を処理する場合、`Map` 状態は [`InputPath`](input-output-inputpath-params.md#input-output-inputpath) の後に `ItemsPath` を適用します。`InputPath` によって入力がフィルタリングされた後、状態への有効な入力に対して処理されます。

`Map` 状態の詳細については、以下を参照してください。
+  [マップステート](state-map.md) 
+ [マップステート処理モード](state-map.md#concepts-map-process-modes)
+ [インラインマップでアクションを反復する](tutorial-map-inline.md)
+ [インライン `Map` 状態の入出力処理](state-map-inline.md#inline-map-state-output)