翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
BatchPutItem
BatchPutItem
リクエストマッピングドキュメントを使用すると、 AWS AppSync DynamoDB リゾルバーに、複数のテーブルにまたがる可能性のある複数の項目を配置するように DynamoDB にBatchWriteItem
リクエストするように指示できます。このリクエストテンプレートでは、以下の情報を指定する必要があります。
-
項目を挿入するテーブルの名前
-
各テーブルに挿入するすべての項目
DynamoDB の BatchWriteItem
制限が適用されるため、条件式を指定することはできません。
BatchPutItem
マッピングドキュメントの構造は次のとおりです。
{ "version" : "2018-05-29", "operation" : "BatchPutItem", "tables" : { "table1": [ ## Item to put { "foo" : ... typed value, "bar" : ... typed value }, ## Item2 to put { "foo" : ... typed value, "bar" : ... typed value }], "table2": [ ## Item3 to put { "foo" : ... typed value, "bar" : ... typed value }, ## Item4 to put { "foo" : ... typed value, "bar" : ... typed value }], } }
各フィールドの定義は以下のようになります。
BatchPutItem フィールド
-
version
-
テンプレート定義のバージョンです。
2018-05-29
のみサポートされています。この値は必須です。 -
operation
-
実行する DynamoDB の処理。
BatchPutItem
DynamoDB の処理を実行するには、これをBatchPutItem
に設定する必要があります。この値は必須です。 -
tables
-
項目を挿入する DynamoDB テーブル。各テーブルエントリは、この特定のテーブルに挿入する DynamoDB 項目のリストを表します。1 つ以上のテーブルを指定する必要があります。この値は必須です。
覚えておくべきポイント:
-
完全に挿入された項目がレスポンスに返されます (正常に挿入された場合)。
-
項目がテーブルに挿入されなかった場合は、そのテーブルの data ブロックに null 要素があります。
-
挿入された項目は、リクエストマッピングテンプレート内で提供された順序に基づいて、テーブル別にソートされます。
-
BatchPutItem
内の各Put
コマンドはアトミックですが、バッチは部分的に処理される場合があります。エラーが原因でバッチが部分的に処理された場合、未処理のキーはunprocessedKeysブロック内の呼び出し結果の一部として返されます。 -
BatchPutItem
は 25 項目に制限されています。 -
このオペレーションは、競合検出で使用するとサポートされていません。両方を同時に使用すると、エラーが発生する可能性があります。
以下に示しているのは、リクエストマッピングテンプレートの例です。
{ "version": "2018-05-29", "operation": "BatchPutItem", "tables": { "authors": [ { "author_id": { "S": "a1" }, "author_name": { "S": "a1_name" } }, ], "posts": [ { "author_id": { "S": "a1" }, "post_id": { "S": "p2" }, "post_title": { "S": "title" } } ], } }
$ctx.result
で使用可能な呼び出し結果は以下のとおりです。
{ "data": { "authors": [ null ], "posts": [ # Was inserted { "author_id": "a1", "post_id": "p2", "post_title": "title" } ] }, "unprocessedItems": { "authors": [ # This item was not processed due to an error { "author_id": "a1", "author_name": "a1_name" } ], "posts": [] } }
$ctx.error
にエラーに関する詳細が含まれています。リクエストマッピングテンプレートで提供されたキーデータ 、unprocessedItems、および各テーブルキーは、呼び出し結果に存在することが保証されます。挿入された項目は data ブロックにあります。処理されていない項目は、データブロック内で null としてマークされ、unprocessedItemsブロック内に配置されます。
より完全な例については、 AppSync 「チュートリアル: DynamoDB バッチリゾルバー」の「DynamoDB バッチチュートリアル」を参照してください。 DynamoDB