BatchDeleteItem - AWS AppSync

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

BatchDeleteItem

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 欄位

version

範本定義的版本。僅支援 2018-05-29。此值為必填。

operation

要執行的 DynamoDB 操作。若要執行 BatchDeleteItem DynamoDB 操作,這必須設為 BatchDeleteItem。此值為必填。

tables

刪除項目的 DynamoDB 資料表。每個資料表都是 DynamoDB 金鑰清單,代表要刪除項目的主要金鑰。DynamoDB 項目可能具有單一雜湊金鑰,或雜湊金鑰和排序金鑰,具體取決於資料表結構。如需如何指定「輸入值」的詳細資訊,請參閱類型系統 (請求映射)。至少必須提供一個資料表。tables 值為必填。

注意事項:

  • 不同於 DeleteItem 操作,回應中未傳回完整刪除的項目。只會傳回已傳遞的索引鍵。

  • 如果資料表中未刪除任何項目,該資料表的 data 區塊中就會顯示 null 元素。

  • 調用結果會根據在請求映射範本中提供的順序,依資料表排序。

  • 中的每個Delete命令BatchDeleteItem都是原子。但是,批次可以部分處理。如果批次因錯誤而部分處理,未處理的金鑰會在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 包含錯誤的詳細資訊。請求映射範本中提供的索引鍵資料 unprocessedKeys、 和每個資料表索引鍵保證會出現在調用結果中。已刪除的項目會出現在 data 區塊中。尚未處理的項目會在資料區塊內標記為 null,並放置在unprocessedKeys區塊內。

如需更完整的範例,請依照 DynamoDB 批次教學課程搭配 AppSync 此處教學課程:DynamoDB 批次解析程式。