

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

# BatchGetItem
<a name="aws-appsync-resolver-mapping-template-reference-dynamodb-batch-get-item"></a>

`BatchGetItem` 요청 매핑 문서를 사용하면 AWS AppSync DynamoDB 해석기에 DynamoDB에 `BatchGetItem` 요청하여 잠재적으로 여러 테이블에서 여러 항목을 검색하도록 지시할 수 있습니다. 이 요청 템플릿에 대해 다음을 지정해야 합니다.
+ 항목을 가져올 테이블 이름
+ 각 테이블에서 가져올 항목의 키

DynamoDB `BatchGetItem` 한도가 적용되고 **표현식 없음**이 제공될 수 있습니다.

`BatchGetItem` 매핑 문서의 구조는 다음과 같습니다.

```
{
    "version" : "2018-05-29",
    "operation" : "BatchGetItem",
    "tables" : {
        "table1": {
           "keys": [
              ## Item to retrieve Key
              {
                   "foo" : ... typed value,
                   "bar" : ... typed value
              },
              ## Item2 to retrieve Key
              {
                   "foo" : ... typed value,
                   "bar" : ... typed value
              }
            ],
            "consistentRead": true|false,            
            "projection" : {
                 ...
            }
        },
        "table2": {
           "keys": [
              ## Item3 to retrieve Key
              {
                   "foo" : ... typed value,
                   "bar" : ... typed value
              },
              ## Item4 to retrieve Key
              {
                   "foo" : ... typed value,
                   "bar" : ... typed value
              }
            ],
            "consistentRead": true|false,
            "projection" : {
                 ...
            }
        }
    }
}
```

필드는 다음과 같이 정의됩니다.

## BatchGetItem 필드
<a name="BatchGetItem-list"></a>

### BatchGetItem 필드 목록
<a name="BatchGetItem-list-col"></a>

** `version` **  
템플릿 정의 버전. `2018-05-29`만 지원됩니다. 이 값은 필수입니다.

** `operation` **  
수행할 DynamoDB 작업입니다. `BatchGetItem` DynamoDB 작업을 수행하려면 이 값을 `BatchGetItem`으로 설정해야 합니다. 이 값은 필수입니다.

** `tables` **  
항목을 가져올 DynamoDB 테이블입니다. 이 값은 테이블 이름이 맵의 키로 지정되는 맵입니다. 테이블이 하나 이상 제공되어야 합니다. 이 `tables` 값은 필수입니다.    
** `keys` **  
검색할 항목의 프라이머리 키를 나타내는 DynamoDB 키 목록입니다. DynamoDB 항목은 테이블 구조에 따라 단일 해시 키 또는 해시 키와 정렬 키를 가질 수 있습니다. '입력된 값'을 지정하는 방법에 대한 자세한 내용은 [유형 시스템(요청 매핑)](aws-appsync-resolver-mapping-template-reference-dynamodb-typed-values-request.md)을 참조하세요.  
** `consistentRead` **  
*GetItem* 작업을 실행할 때 일관된 읽기를 사용할지 여부. 이 값은 선택 사항으로, 기본값은 *false*입니다.  
**`projection`**  
DynamoDB 작업에서 반환할 속성을 지정하는 데 사용되는 프로젝션입니다. 프로젝션에 대한 자세한 내용은 [프로젝션](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-mapping-template-reference-dynamodb.html#aws-appsync-resolver-mapping-template-reference-dynamodb-projections)을 참조하세요. 이 필드는 선택 사항입니다.

기억해야 할 내용:
+ 테이블에서 항목을 가져오지 못하면 해당 테이블의 데이터 블록에 *null* 요소가 나타납니다.
+ 호출 결과는 요청 매핑 템플릿 내에 제공된 순서에 따라 테이블별로 정렬됩니다.
+ `BatchGetItem` 내부의 각 `Get` 명령은 원자성이지만 배치는 부분적으로 처리될 수 있습니다. 오류로 인해 배치가 부분적으로 처리된 경우 처리되지 않은 키는 *unprocessedKeys* 블록 내에 호출 결과의 일부로 반환됩니다.
+  `BatchGetItem`은 100개의 키로 제한됩니다.

다음과 같은 요청 매핑 템플릿 예제가 있습니다.

```
{
  "version": "2018-05-29",
  "operation": "BatchGetItem",
  "tables": {
    "authors": [
        {
          "author_id": {
            "S": "a1"
          }
        },
    ],
    "posts": [
        {
          "author_id": {
            "S": "a1"
          },
          "post_id": {
            "S": "p2"
          }
        }
    ],
  }
}
```

`$ctx.result`에서 사용할 수 있는 호출 결과는 다음과 같습니다.

```
{
   "data": {
     "authors": [null],
     "posts": [
        # Was retrieved
        {
          "author_id": "a1",
          "post_id": "p2",
          "post_title": "title",
          "post_description": "description",
        }
     ]
   },
   "unprocessedKeys": {
     "authors": [
        # This item was not processed due to an error
        {
          "author_id": "a1"
        }
      ],
     "posts": []
   }
}
```

`$ctx.error`에는 오류에 대한 세부 정보가 포함됩니다. 키 **data**, **unprocessedKeys** 및 요청 매핑 템플릿에서 제공된 각 테이블 키는 호출 결과에 표시됩니다. 삭제된 항목은 **데이터** 블록에 나타납니다. 처리되지 않은 항목은 데이터 블록 내에서 *null*로 표시되고 **unprocessedKeys** 블록 내에 배치됩니다.

보다 완벽한 예제를 찾아보려면 [자습서: DynamoDB 배치 해석기](tutorial-dynamodb-batch.md#aws-appsync-tutorial-dynamodb-batch)에서 AppSync 관련 DynamoDB 배치 자습서를 따라해 보세요.