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.
TransactWriteItems
Mit dem TransactWriteItems
Anforderungsobjekt können Sie die AWS AppSync DynamoDB-Funktion anweisen, eine TransactWriteItems
Anforderung an DynamoDB zu stellen, um mehrere Elemente zu schreiben, möglicherweise in mehrere Tabellen. Für dieses Anforderungsobjekt müssen Sie Folgendes angeben:
-
Der Name der Zieltabelle jedes Anforderungselements
-
Der Vorgang jedes auszuführenden Anforderungselements. Es gibt vier Arten von Operationen, die unterstützt werden: PutItemUpdateItem, DeleteItem, und ConditionCheck
-
Der Schlüssel jedes zu schreibenden Anforderungselements
Es gelten die DynamoDB TransactWriteItems
-Grenzwerte.
Das TransactWriteItems
Anforderungsobjekt hat die folgende Struktur:
type DynamoDBTransactWriteItemsRequest = { operation: 'TransactWriteItems'; transactItems: TransactItem[]; }; type TransactItem = | TransactWritePutItem | TransactWriteUpdateItem | TransactWriteDeleteItem | TransactWriteConditionCheckItem; type TransactWritePutItem = { table: string; operation: 'PutItem'; key: { [key: string]: any }; attributeValues: { [key: string]: string}; condition?: TransactConditionCheckExpression; }; type TransactWriteUpdateItem = { table: string; operation: 'UpdateItem'; key: { [key: string]: any }; update: DynamoDBExpression; condition?: TransactConditionCheckExpression; }; type TransactWriteDeleteItem = { table: string; operation: 'DeleteItem'; key: { [key: string]: any }; condition?: TransactConditionCheckExpression; }; type TransactWriteConditionCheckItem = { table: string; operation: 'ConditionCheck'; key: { [key: string]: any }; condition?: TransactConditionCheckExpression; }; type TransactConditionCheckExpression = { expression: string; expressionNames?: { [key: string]: string}; expressionValues?: { [key: string]: any}; returnValuesOnConditionCheckFailure: boolean; };
TransactWriteItems Felder
- Die Felder sind wie folgt definiert:
-
-
operation
-
Der DynamoDB DynamoDB-Vorgang. Um die
TransactWriteItems
-DynamoDB-Operation durchzuführen, muss diese aufTransactWriteItems
gesetzt sein. Dieser Wert ist erforderlich. -
transactItems
-
Die einzuschließenden Anforderungselemente. Der Wert ist ein Array von Anforderungselementen. Es muss mindestens ein Anforderungselement angegeben werden. Dieser
transactItems
-Wert ist erforderlich.Für
PutItem
sind die Felder wie folgt definiert:-
table
-
Die DynamoDB-Zieltabelle. Der Wert ist eine Zeichenfolge des Tabellennamens. Dieser
table
-Wert ist erforderlich. -
operation
-
Der DynamoDB DynamoDB-Vorgang. Um die
PutItem
-DynamoDB-Operation durchzuführen, muss diese aufPutItem
gesetzt sein. Dieser Wert ist erforderlich. -
key
-
Der DynamoDB-Schlüssel, der den Primärschlüssel des einzufügenden Elements darstellt. 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. Sie können angeben, ob das vorhandene Element zurückgerufen werden soll, wenn die Bedingungsprüfung fehlschlägt. Weitere Informationen zu Transaktionsbedingungen finden Sie unter Ausdrücke für Transaktionsbedingungen. Dieser Wert ist optional.
Für
UpdateItem
sind die Felder wie folgt definiert:-
table
-
Die zu aktualisierende DynamoDB-Tabelle. Der Wert ist eine Zeichenfolge des Tabellennamens. Dieser
table
-Wert ist erforderlich. -
operation
-
Der DynamoDB DynamoDB-Vorgang. Um die
UpdateItem
-DynamoDB-Operation durchzuführen, muss diese aufUpdateItem
gesetzt sein. Dieser Wert ist erforderlich. -
key
-
Der DynamoDB-Schlüssel, der den Primärschlüssel des zu aktualisierenden Elements darstellt. 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.
-
update
-
update
In diesem Abschnitt können Sie einen Aktualisierungsausdruck angeben, der beschreibt, wie das Element in DynamoDB aktualisiert wird. Weitere Informationen zum Schreiben von Aktualisierungsausdrücken finden Sie in der DynamoDB-Dokumentation UpdateExpressions . Dieser Abschnitt ist erforderlich. -
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, aktualisiert die
UpdateItem
-Anforderung jeden vorhandenen Eintrag unabhängig vom aktuellen Status. Sie können angeben, ob das vorhandene Element zurückgerufen werden soll, wenn die Bedingungsprüfung fehlschlägt. Weitere Informationen zu Transaktionsbedingungen finden Sie unter Ausdrücke für Transaktionsbedingungen. Dieser Wert ist optional.
Für
DeleteItem
sind die Felder wie folgt definiert:-
table
-
Die DynamoDB-Tabelle, in der das Element gelöscht werden soll. Der Wert ist eine Zeichenfolge des Tabellennamens. Dieser
table
-Wert ist erforderlich. -
operation
-
Der DynamoDB DynamoDB-Vorgang. Um die
DeleteItem
-DynamoDB-Operation durchzuführen, muss diese aufDeleteItem
gesetzt sein. Dieser Wert ist erforderlich. -
key
-
Der DynamoDB-Schlüssel, der den Primärschlüssel des zu löschenden Elements darstellt. 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.
-
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, löscht die
DeleteItem
-Anforderung ein Element unabhängig vom aktuellen Status. Sie können angeben, ob das vorhandene Element zurückgerufen werden soll, wenn die Bedingungsprüfung fehlschlägt. Weitere Informationen zu Transaktionsbedingungen finden Sie unter Ausdrücke für Transaktionsbedingungen. Dieser Wert ist optional.
Für
ConditionCheck
sind die Felder wie folgt definiert:-
table
-
Die DynamoDB-Tabelle, in der der Zustand überprüft werden soll. Der Wert ist eine Zeichenfolge des Tabellennamens. Dieser
table
-Wert ist erforderlich. -
operation
-
Der DynamoDB DynamoDB-Vorgang. Um die
ConditionCheck
-DynamoDB-Operation durchzuführen, muss diese aufConditionCheck
gesetzt sein. Dieser Wert ist erforderlich. -
key
-
Der DynamoDB-Schlüssel, der den Primärschlüssel des Artikels zur Zustandsprüfung darstellt. 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.
-
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. Sie können angeben, ob das vorhandene Element zurückgerufen werden soll, wenn die Bedingungsprüfung fehlschlägt. Weitere Informationen zu Transaktionsbedingungen finden Sie unter Ausdrücke für Transaktionsbedingungen. Dieser Wert ist erforderlich.
-
-
Beachten Sie Folgendes:
-
Nur Schlüssel von Anforderungselementen werden in der Antwort zurückgegeben, wenn diese erfolgreich ist. Die Reihenfolge der Schlüssel entspricht der Reihenfolge der Anforderungselemente.
-
Transaktionen werden auf irgendeine Weise ausgeführt. all-or-nothing Wenn ein Anforderungselement einen Fehler verursacht, wird die gesamte Transaktion nicht ausgeführt, und Fehlerdetails werden zurückgegeben.
-
Es können keine zwei Anforderungselemente auf dasselbe Element ausgerichtet werden. Andernfalls führen sie zu TransactionCanceledExceptionFehlern.
-
Wenn der Fehler einer Transaktion vorliegt TransactionCanceledException, wird der
cancellationReasons
Block aufgefüllt. Wenn die Bedingungsprüfung eines Anforderungselements fehlschlägt und Sie nichtreturnValuesOnConditionCheckFailure
alsfalse
angegeben haben, wird das in der Tabelle vorhandene Elementitem
an der entsprechenden Position descancellationReasons
-Blocks abgerufen und gespeichert. -
TransactWriteItems
ist auf 100 Anfrageelemente begrenzt. -
Dieser Vorgang wird nicht unterstützt, wenn er zusammen mit der Konflikterkennung verwendet wird. Wenn Sie beide gleichzeitig verwenden, kann dies zu einem Fehler führen.
Für das folgende Beispiel für einen Funktionsanforderungshandler:
import { util } from '@aws-appsync/utils'; export function request(ctx) { const { authorId, postId, title, description, oldTitle, authorName } = ctx.args; return { operation: 'TransactWriteItems', transactItems: [ { table: 'posts', operation: 'PutItem', key: util.dynamodb.toMapValues({ postId }), attributeValues: util.dynamodb.toMapValues({ title, description }), condition: util.transform.toDynamoDBConditionExpression({ title: { eq: oldTitle }, }), }, { table: 'authors', operation: 'UpdateItem', key: util.dynamodb.toMapValues({ authorId }), update: { expression: 'SET authorName = :name', expressionValues: util.dynamodb.toMapValues({ ':name': authorName }), }, }, ], }; }
Wenn die Transaktion erfolgreich ist, ist das Aufrufergebnis in ctx.result
wie folgt verfügbar:
{ "keys": [ // Key of the PutItem request { "post_id": "p1", }, // Key of the UpdateItem request { "author_id": "a1" } ], "cancellationReasons": null }
Wenn die Transaktion aufgrund eines Fehlers bei der Zustandsprüfung der PutItem
Anforderung fehlschlägt, ctx.result
ist das Aufrufergebnis wie folgt verfügbar:
{ "keys": null, "cancellationReasons": [ { "item": { "post_id": "p1", "post_title": "Actual old title", "post_description": "Old description" }, "type": "ConditionCheckFailed", "message": "The condition check failed." }, { "type": "None", "message": "None" } ] }
ctx.error
enthält die Einzelheiten zu dem Fehler. Die Schlüssel cancellationReasonssind garantiert vorhanden inctx.result
.