TransactGetItems - AWS AppSync

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

TransactGetItems

TransactGetItems 請求物件可讓您告訴 AWS AppSync DynamoDB 函數向 DynamoDB 提出TransactGetItems請求,以擷取多個項目,可能跨越多個資料表。對於此請求物件,您必須指定下列項目:

  • 從中擷取項目之每個請求項目的資料表名稱

  • 從每個資料表擷取之每個請求項目的索引鍵

此時會套用 DynamoDB TransactGetItems 限制,且可能不會提供任何條件表達式

TransactGetItems 請求物件具有下列結構:

type DynamoDBTransactGetItemsRequest = { operation: 'TransactGetItems'; transactItems: { table: string; key: { [key: string]: any }; projection?: { expression: string; expressionNames?: { [key: string]: string }; }[]; }; };

欄位定義如下:

TransactGetItems 欄位

operation

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

transactItems

要包含的請求項目。此值是請求項目的陣列。必須提供至少一個請求項目。transactItems 值為必填。

table

要從中擷取項目的 DynamoDB 資料表。此值是資料表名稱的字串。table 值為必填。

key

DynamoDB 金鑰代表要擷取之項目的主要金鑰。DynamoDB 項目可能具有單一雜湊金鑰,或雜湊金鑰和排序金鑰,具體取決於資料表結構。如需如何指定「輸入值」的詳細資訊,請參閱類型系統 (請求映射)

projection

用於指定要從 DynamoDB 操作傳回之屬性的投影。如需投影的詳細資訊,請參閱投影 。此欄位為選用欄位。

注意事項:

  • 如果交易成功,items 區塊中擷取項目的順序會與請求項目的順序相同。

  • 交易會以某種 all-or-nothing方式執行。如果任何請求項目造成錯誤,將不執行整個交易,而且將傳回錯誤詳細資料。

  • 無法擷取的請求項目不是錯誤。相反地,null 元素會出現在對應位置的項目區塊。

  • 如果交易的錯誤是 TransactionCanceledException,則會填入cancellationReasons區塊。cancellationReasons 區塊中取消原因的順序將與請求項目的順序相同。

  • TransactGetItems 限制為 100 個請求項目。

對於下列範例函數請求處理常式:

import { util } from '@aws-appsync/utils'; export function request(ctx) { const { authorId, postId } = ctx.args; return { operation: 'TransactGetItems', transactItems: [ { table: 'posts', key: util.dynamodb.toMapValues({ postId }), }, { table: 'authors', key: util.dynamodb.toMapValues({ authorId }), }, ], }; }

如果交易成功,而且僅擷取第一個請求項目,則 ctx.result 中的可用叫用結果如下所示:

{ "items": [ { // Attributes of the first requested item "post_id": "p1", "post_title": "title", "post_description": "description" }, // Could not retrieve the second requested item null, ], "cancellationReasons": null }

如果交易因第一個請求項目TransactionCanceledException而失敗, 中可用的調用結果ctx.result如下所示:

{ "items": null, "cancellationReasons": [ { "type":"Sample error type", "message":"Sample error message" }, { "type":"None", "message":"None" } ] }

ctx.error 包含錯誤的詳細資訊。金鑰項目 cancellationReasons 和 保證會出現在 中ctx.result