PutItem - AWS AppSync

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

PutItem

Mit dem PutItem Anforderungszuordnungsdokument können Sie den AWS AppSync DynamoDB-Resolver anweisen, eine PutItem Anfrage an DynamoDB zu stellen, und Sie können Folgendes angeben:

  • Der Schlüssel des Elements in DynamoDB

  • Der vollständige Inhalt des Elements (bestehend aus key und attributeValues)

  • Bedingungen, damit die Operation erfolgreich ausgeführt werden kann

Das PutItem-Zuweisungsdokument weist die folgende Struktur auf:

{ "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 }

Die Felder sind wie folgt definiert:

PutItem Felder

version

Die Version der Vorlagedefinition. Aktuell werden 2017-02-28 und 2018-05-29 unterstützt. Dieser Wert ist erforderlich.

operation

Der DynamoDB DynamoDB-Vorgang. Um die PutItem-DynamoDB-Operation durchzuführen, muss diese auf PutItem gesetzt sein. Dieser Wert ist erforderlich.

key

Der Schlüssel des Elements in DynamoDB. DynamoDB-Elemente können je nach Tabellenstruktur einen einzelnen Hashschlüssel oder einen Hashschlüssel und einen Sortierschlüssel haben. Weitere Informationen zur Angabe eines „typisierten Werts“ finden Sie unter Typsystem (Anforderungszuordnung). Dieser Wert ist erforderlich.

attributeValues

Der Rest der Attribute des Elements, die in DynamoDB gespeichert werden sollen. Weitere Informationen zur Angabe eines „typisierten Werts“ finden Sie unter Typsystem (Anforderungszuordnung). Dies ist ein optionales Feld.

condition

Eine Bedingung, um zu bestimmen, ob die Anforderung erfolgreich sein soll oder nicht, basierend auf dem Status des Objekts, das sich bereits in DynamoDB befindet. Wenn keine Bedingung angegeben ist, überschreibt die PutItem-Anforderung alle vorhandenen Einträge für dieses Element. Weitere Informationen zu Bedingungen finden Sie unter Bedingungsausdrücke. Dieser Wert ist optional.

_version

Ein numerischer Wert, der die neueste bekannte Version eines Elements darstellt. Dieser Wert ist optional. Dieses Feld wird für die Konflikterkennung verwendet und nur für versionsgesteuerte Datenquellen unterstützt.

customPartitionKey

Wenn diese Option aktiviert ist, ändert dieser Zeichenfolgenwert das Format der ds_sk und ds_pk -Datensätze, die von der Delta-Synchronisierungstabelle verwendet werden, wenn die Versionierung aktiviert wurde (weitere Informationen finden Sie unter Konflikterkennung und -synchronisierung im AWS AppSync Entwicklerhandbuch). Wenn diese Option aktiviert ist, ist auch die Verarbeitung des populateIndexFields Eintrags aktiviert. Dies ist ein optionales Feld.

populateIndexFields

Ein boolescher Wert, der, wenn er zusammen mit dem aktiviert wirdcustomPartitionKey, neue Einträge für jeden Datensatz in der Delta-Synchronisierungstabelle erstellt, insbesondere in den Spalten gsi_ds_pk undgsi_ds_sk. Weitere Informationen finden Sie unter Konflikterkennung und -synchronisierung im AWS AppSync Entwicklerhandbuch. Dies ist ein optionales Feld.

Das in DynamoDB geschriebene Element wird automatisch in GraphQL und JSON primitive Typen konvertiert und ist im Mapping-Kontext () verfügbar. $context.result

Weitere Informationen zur DynamoDB-Typkonvertierung finden Sie unter Typsystem (Antwortzuordnung).

Weitere Informationen zu Vorlagen für die Antwortzuweisung finden Sie unter Übersicht über Resolver-Mapping-Vorlagen.

Beispiel 1

Das folgende Beispiel ist eine Mapping-Vorlage für eine GraphQL-MutationupdateThing(foo: String!, bar: String!, name: String!, version: Int!).

Wenn kein Element mit dem angegebenen Schlüssel vorhanden ist, wird es erstellt. Wenn ein Element mit dem angegebenen Schlüssel bereits vorhanden ist, wird es überschrieben.

{ "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) } }

Beispiel 2

Das folgende Beispiel ist eine Mapping-Vorlage für eine GraphQL-MutationupdateThing(foo: String!, bar: String!, name: String!, expectedVersion: Int!).

In diesem Beispiel wird überprüft, ob für das Element, das sich derzeit in DynamoDB befindet, das version Feld auf gesetzt ist. 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) } } }

Weitere Informationen zu DynamoDB finden Sie in der PutItem API APIDynamoDB-Dokumentation.