

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

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

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

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

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

```
{
    "version" : "2018-05-29",
    "operation" : "BatchDeleteItem",
    "tables" : {
        "table1": [
        ## Item to delete Key
        {
             "foo" : ... typed value,
             "bar" : ... typed value
        },
        ## Item2 to delete Key
        {
             "foo" : ... typed value,
             "bar" : ... typed value
        }],
        "table2": [
        ## Item3 to delete Key
        {
             "foo" : ... typed value,
             "bar" : ... typed value
        },
        ## Item4 to delete Key
        {
             "foo" : ... typed value,
             "bar" : ... typed value
        }],
    }
}
```

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

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

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

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

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

** `tables` **  
항목을 삭제할 DynamoDB 테이블입니다. 각 테이블은 삭제할 항목의 프라이머리 키를 나타내는 DynamoDB 키 목록입니다. DynamoDB 항목은 테이블 구조에 따라 단일 해시 키 또는 해시 키와 정렬 키를 가질 수 있습니다. '입력된 값'을 지정하는 방법에 대한 자세한 내용은 [유형 시스템(요청 매핑)](aws-appsync-resolver-mapping-template-reference-dynamodb-typed-values-request.md)을 참조하세요. 테이블이 하나 이상 제공되어야 합니다. `tables` 값이 필요합니다.

기억해야 할 내용:
+ `DeleteItem` 작업과 달리 완전히 삭제된 항목은 응답에서 반환되지 않습니다. 전달된 키만 반환됩니다.
+ 테이블에서 항목을 삭제하지 못하면 해당 테이블의 데이터 블록에 *null* 요소가 나타납니다.
+ 호출 결과는 요청 매핑 템플릿 내에 제공된 순서에 따라 테이블별로 정렬됩니다.
+ `BatchDeleteItem` 내부의 각 `Delete` 명령은 원자성입니다. 그러나 배치는 부분적으로 처리될 수 있습니다. 오류로 인해 배치가 부분적으로 처리된 경우 처리되지 않은 키는 *unprocessedKeys* 블록 내에 호출 결과의 일부로 반환됩니다.
+  `BatchDeleteItem`은 25개의 키로 제한됩니다.
+ 충돌 감지와 함께 사용할 때 이 작업은 지원되지 **않습니다**. 두 가지를 동시에 사용하면 오류가 발생할 수 있습니다.

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

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

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

```
{
   "data": {
     "authors": [null],
     "posts": [
        # Was deleted
        {
          "author_id": "a1",
          "post_id": "p2"
        }
     ]
   },
   "unprocessedKeys": {
     "authors": [
        # This key 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 배치 자습서를 따라해 보세요.