

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

# ItemBatcher(맵)
<a name="input-output-itembatcher"></a>

**상태 관리 및 데이터 트랜스포밍**  
[변수를 사용하여 상태 간 데이터 전달](workflow-variables.md)과 [JSONata를 사용하여 데이터 트랜스포밍](transforming-data.md)에 대해 알아봅니다.

`ItemBatcher` 필드는 단일 하위 워크플로 실행에서 항목 그룹을 처리하도록 지정하는 JSON 개체입니다. 대용량 CSV 파일이나 JSON 배열 또는 대규모 Amazon S3 객체 집합을 처리할 때 일괄 처리를 사용합니다.

다음 예제에서는 `ItemBatcher` 필드 구문을 보여줍니다. 다음 구문에서 각 하위 워크플로 실행에서 처리해야 하는 최대 항목 수는 100으로 설정됩니다.

```
{
  "ItemBatcher": {
    "MaxItemsPerBatch": 100
  }
}
```

기본적으로 데이터세트의 각 항목은 입력으로 개별 하위 워크플로 실행에 전달됩니다. 예를 들어 다음 배열이 포함된 JSON 파일을 입력으로 지정한다고 가정해보겠습니다.

```
[
  {
    "verdict": "true",
    "statement_date": "6/11/2008",
    "statement_source": "speech"
  },
  {
    "verdict": "false",
    "statement_date": "6/7/2022",
    "statement_source": "television"
  },
  {
    "verdict": "true",
    "statement_date": "5/18/2016",
    "statement_source": "news"
  },
  ...
]
```

지정된 입력의 경우 각 하위 워크플로 실행은 배열 항목을 입력으로 수신합니다. 다음은 하위 워크플로 실행 입력을 보여주는 예제입니다.

```
{
  "verdict": "true",
  "statement_date": "6/11/2008",
  "statement_source": "speech"
}
```

처리 작업의 성능과 비용을 최적화하려면 항목 수와 항목 처리 시간의 균형을 맞추는 배치 크기를 선택합니다. 일괄 처리를 사용하면 Step Functions에서 항목을 **항목** 배열에 추가합니다. 그런 다음 배열을 입력으로 각 하위 워크플로 실행에 전달합니다. 다음은 하위 워크플로 실행에 입력으로 전달된 두 항목의 배치를 보여주는 예제입니다.

```
{
  "Items": [
    {
      "verdict": "true",
      "statement_date": "6/11/2008",
      "statement_source": "speech"
    },
    {
      "verdict": "false",
      "statement_date": "6/7/2022",
      "statement_source": "television"
    }
  ]
}
```

**작은 정보**  
워크플로에서 `ItemBatcher` 필드를 사용하는 방법에 대해 자세히 알아보려면 다음 자습서와 워크숍을 사용해보세요.  
[Lambda 함수 내에서 전체 데이터 배치 처리](tutorial-itembatcher-param-task.md)
[하위 워크플로 실행 내에서 일괄적으로 항목 반복](tutorial-itembatcher-single-item-process.md)
*AWS Step Functions 워크숍*의 [Distributed Map 및 관련 리소스](https://catalog.workshops.aws/stepfunctions/use-cases/distributed-map) 

**Contents**
+ [항목 일괄 처리를 지정하는 필드](#input-output-itembatcher-subfields)

## 항목 일괄 처리를 지정하는 필드
<a name="input-output-itembatcher-subfields"></a>

항목을 일괄 처리하려면 일괄 처리할 최대 항목 수, 최대 배치 크기 또는 둘 다를 지정합니다. 항목을 일괄 처리하려면 다음 값 중 하나를 지정해야 합니다.

**배치당 최대 항목 수**  
각 하위 워크플로 실행에서 처리하는 최대 항목 수를 지정합니다. 인터프리터는 `Items` 배열에서 일괄 처리되는 항목 수를 이 값으로 제한합니다. 배치 번호와 크기 모두 지정하면 인터프리터는 지정된 배치 크기 한도가 초과되지 않도록 배치의 항목 수를 줄입니다.  
이 값을 지정하지 않고 최대 배치 크기 값을 제공하면 Step Functions는 최대 배치 크기(바이트 단위)를 초과하지 않고 각 하위 워크플로 실행에서 최대한 많은 항목을 처리합니다.  
예를 들어 노드 1130개가 포함된 입력 JSON 파일을 사용하여 실행을 실행한다고 가정해보겠습니다. 각 배치의 최대 항목 값을 100으로 지정하면 Step Functions에서 배치 12개를 만듭니다. 이 중 배치 11개 각각에는 항목 100개가 포함되고 12번째 배치에는 잔여 항목 30개가 포함됩니다.  
또는 *Distributed Map 상태* 입력의 기존 키-값 페어에 대한 [참조 경로](amazon-states-language-paths.md#amazon-states-language-reference-paths)로 각 배치의 최대 항목 수를 지정할 수 있습니다. 이 경로는 양의 정수로 확인되어야 합니다.  
다음 입력을 예로 들어보겠습니다.  

```
{
  "maxBatchItems": 500
}
```
다음과 같이 참조 경로(**JSONPath만 해당**)를 사용하여 일괄 처리할 최대 항목 수를 지정할 수 있습니다.  

```
{
  ...
  "Map": {
    "Type": "Map",
    "MaxConcurrency": 2000,
    "ItemBatcher": {
      "MaxItemsPerBatchPath": "$.maxBatchItems"
    }
    ...
    ...
  }
}
```
**JSONata 기반** 상태의 경우 양의 정수로 평가되는 JSONata 표현식을 제공할 수도 있습니다.  
`MaxItemsPerBatch` 또는 `MaxItemsPerBatchPath (JSONPath only)` 하위 필드를 지정할 수 있지만 둘 다 함께 지정할 수는 없습니다.

**일괄 처리당 최대 KiB**  
최대 일괄 처리 크기(바이트 단위)를 최대 256KiB까지 지정합니다. 최대 배치 수와 크기 모두 지정하면 Step Functions는 지정된 배치 크기 한도가 초과되지 않도록 배치의 항목 수를 줄입니다.  
또는 *Distributed Map 상태* 입력의 기존 키-값 페어에 대한 [참조 경로](amazon-states-language-paths.md#amazon-states-language-reference-paths)로 최대 배치 크기를 지정할 수 있습니다. 이 경로는 양의 정수로 확인되어야 합니다.  
일괄 처리를 사용하지만 최대 배치 크기를 지정하지 않으면 인터프리터는 각 하위 워크플로 실행에서 최대 256KiB까지 처리할 수 있는 항목 수를 모두 처리합니다.
다음 입력을 예로 들어보겠습니다.  

```
{
  "batchSize": 131072
}
```
다음과 같이 참조 경로를 사용하여 최대 배치 크기를 지정할 수 있습니다.  

```
{
  ...
  "Map": {
    "Type": "Map",
    "MaxConcurrency": 2000,
    "ItemBatcher": {
      "MaxInputBytesPerBatchPath": "$.batchSize"
    }
    ...
    ...
  }
}
```
**JSONata 기반** 상태의 경우 양의 정수로 평가되는 JSONata 표현식을 제공할 수도 있습니다.  
`MaxInputBytesPerBatch` 또는 `MaxInputBytesPerBatchPath`(JSONPath만 해당) 하위 필드를 지정할 수 있지만 둘 다 함께 지정할 수는 없습니다.

**배치 입력**  
필요한 경우 각 하위 워크플로 실행에 전달되는 각 배치에 포함할 고정 JSON 입력을 지정할 수도 있습니다. Step Functions는 이 입력을 각 개별 하위 워크플로 실행의 입력과 병합합니다. 항목 배열의 사실 확인 날짜 고정 입력을 예로 들어 보겠습니다.  

```
"ItemBatcher": {
    "BatchInput": {
        "factCheck": "December 2022"
    }
}
```
각 하위 워크플로 실행에서 입력으로 다음을 수신합니다.  

```
{
  "BatchInput": {
    "factCheck": "December 2022"
  },
  "Items": [
    {
      "verdict": "true",
      "statement_date": "6/11/2008",
      "statement_source": "speech"
    },
    {
      "verdict": "false",
      "statement_date": "6/7/2022",
      "statement_source": "television"
    },
    ...
  ]
}
```
**JSONata 기반** 상태의 경우 JSONata 표현식을 BatchInput에 직접 제공하거나 JSON 객체 또는 배열 내에서 JSONata 표현식을 사용할 수 있습니다.