PutItem - AWS AppSync

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

PutItem

PutItem 請求映射文件可讓您告訴 AWS AppSync DynamoDB 解析器向 DynamoDB 提出PutItem請求,並可讓您指定下列項目:

  • DynamoDB 中項目的索引鍵

  • 項目 (由 keyattributeValues 組成) 的完整內容

  • 操作成功的條件

PutItem 映射文件結構如下:

{ "version" : "2018-05-29", "operation" : "PutItem", "customPartitionKey" : "foo", "populateIndexFields" : boolean value, "key": { "foo" : ... typed value, "bar" : ... typed value }, "attributeValues" : { "baz" : ... typed value }, "condition" : { ... }, "_version" : 1 }

欄位定義如下:

PutItem 欄位

version

範本定義版本。目前支援 2017-02-282018-05-29。此值為必填。

operation

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

key

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

attributeValues

將放入 DynamoDB 的項目其餘屬性。如需如何指定「輸入值」的詳細資訊,請參閱類型系統 (請求映射)。此欄位為選用欄位。

condition

決定要求是否成功的條件,可根據已存在於 DynamoDB 的物件狀態。如果沒有指定條件,PutItem 要求會覆寫該項目的任何現有資料項目。如需條件的詳細資訊,請參閱條件表達式 。此值是選用的。

_version

代表項目之最新已知版本的數值。此值是選用的。此欄位用於衝突偵測,而且僅支援已建立版本的資料來源。

customPartitionKey

啟用時,此字串值會修改啟用版本控制時,delta 同步表使用的 ds_skds_pk記錄格式 (如需詳細資訊,請參閱 AWS AppSync 開發人員指南 中的衝突偵測和同步)。啟用時,也會啟用populateIndexFields項目的處理。此欄位為選用欄位。

populateIndexFields

布林值,當 與 一起customPartitionKey啟用時,會為 Delta 同步表中的每個記錄建立新的項目,特別是在 gsi_ds_pkgsi_ds_sk欄中。如需詳細資訊,請參閱 AWS AppSync 開發人員指南 中的衝突偵測和同步。此欄位為選用欄位。

寫入 DynamoDB 的項目會自動轉換為 GraphQL JSON 和原始類型,並可在映射內容中使用 ($context.result)。

如需 DynamoDB 類型轉換的詳細資訊,請參閱類型系統 (回應映射)

如需回應映射範本的詳細資訊,請參閱解析器映射範本概觀。

範例 1

下列範例是 GraphQL 突變 的映射範本updateThing(foo: String!, bar: String!, name: String!, version: Int!)

若無指定索引鍵的項目,則會建立該項目。若已有指定索引鍵的項目,則會覆寫該項目。

{ "version" : "2017-02-28", "operation" : "PutItem", "key": { "foo" : $util.dynamodb.toDynamoDBJson($ctx.args.foo), "bar" : $util.dynamodb.toDynamoDBJson($ctx.args.bar) }, "attributeValues" : { "name" : $util.dynamodb.toDynamoDBJson($ctx.args.name), "version" : $util.dynamodb.toDynamoDBJson($ctx.args.version) } }

範例 2

下列範例是 GraphQL 突變 的映射範本updateThing(foo: String!, bar: String!, name: String!, expectedVersion: Int!)

此範例會檢查以確保目前在 DynamoDB 中的項目version欄位設定為 expectedVersion

{ "version" : "2017-02-28", "operation" : "PutItem", "key": { "foo" : $util.dynamodb.toDynamoDBJson($ctx.args.foo), "bar" : $util.dynamodb.toDynamoDBJson($ctx.args.bar) }, "attributeValues" : { "name" : $util.dynamodb.toDynamoDBJson($ctx.args.name), #set( $newVersion = $context.arguments.expectedVersion + 1 ) "version" : $util.dynamodb.toDynamoDBJson($newVersion) }, "condition" : { "expression" : "version = :expectedVersion", "expressionValues" : { ":expectedVersion" : $util.dynamodb.toDynamoDBJson($expectedVersion) } } }

如需 DynamoDB PutItem 的詳細資訊API,請參閱 DynamoDB API 文件