

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# ItemsPath(Map, 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 객체인 경우 객체의 각 키-값 페어에 대해 반복을 실행하여 해당 페어를 반복에 입력으로 전달합니다.

**참고**  
워크플로의 이전 상태에서 전달된 JSON 입력을 사용하는 경우에만 *Distributed Map 상태*에서 `ItemsPath`를 사용할 수 있습니다.

의 값은 [참조 경로](amazon-states-language-paths.md#amazon-states-language-reference-paths)`ItemsPath`여야 하며 해당 경로는 JSON 배열 또는 객체로 평가되어야 합니다. 예를 들어 다음과 같은 두 개의 배열이 포함된 `Map` 상태를 가정해 보겠습니다.

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

이 경우 `ItemsPath`로 배열을 선택하여 `Map` 상태 반복에 사용할 배열을 지정할 수 있습니다. 다음 상태 머신 정의에서는 `ItemsPath`를 사용하여 입력에서 `ThingsPiratesSay` 배열을 지정합니다. 그런 다음 `ThingsPiratesSay` 배열의 항목마다 `SayWord` Pass 상태 반복을 실행합니다.

```
{
  "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}
    }
  }
}
```

웹 서버 객체를 반복하려면 `$.servers.web`를 `ItemsPath`로 설정합니다.

```
{
  "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` 상태에 대한 자세한 내용은 다음을 참조하십시오.
+  [Map 상태](state-map.md) 
+ [Map 상태 처리 모드](state-map.md#concepts-map-process-modes)
+ [Inline Map으로 작업 반복](tutorial-map-inline.md)
+ [Inline `Map` 상태 입력 및 출력 처리](state-map-inline.md#inline-map-state-output)