

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

# 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)」を参照してください。1 つ以上のテーブルを指定する必要があります。値 が必要です。

覚えておくべきポイント:
+ `DeleteItem` オペレーションとは対照的に、完全に削除された項目はレスポンスで返されません。渡されたキーのみが返されます。
+ 項目がテーブルから削除されなかった場合は、そのテーブルの data ブロックに *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** キー、およびリクエストマッピングテンプレートで渡された各テーブルキーは呼び出し結果に必ずあります。削除された項目は **data** ブロックにあります。処理されなかった項目は、data ブロック内で *null* としてマークされ、**unprocessedKeys** ブロックに挿入されます。

より完全な例については、AppSync の DynamoDB Batch の「[チュートリアル: DynamoDB Batch リゾルバー」](tutorial-dynamodb-batch.md#aws-appsync-tutorial-dynamodb-batch)を参照してください。