Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
TransactWriteItems
Le document de mappage des demandes vous permet de TransactWriteItems
demander au résolveur AWS AppSync DynamoDB de TransactWriteItems
demander à DynamoDB d'écrire plusieurs éléments, éventuellement dans plusieurs tables. Pour ce modèle de requête, vous devez spécifier les valeurs suivantes :
-
Nom de la table de destination de chaque élément de requête
-
L'opération de chaque élément de demande à effectuer. Quatre types d'opérations sont pris en charge : PutItemUpdateItem, DeleteItem, et ConditionCheck
-
La clé de chaque élément de demande à écrire
Les limites TransactWriteItems
DynamoDB s'appliquent.
Le document de mappage TransactWriteItems
a la structure suivante :
{ "version": "2018-05-29", "operation": "TransactWriteItems", "transactItems": [ { "table": "table1", "operation": "PutItem", "key": { "foo": ... typed value, "bar": ... typed value }, "attributeValues": { "baz": ... typed value }, "condition": { "expression": "someExpression", "expressionNames": { "#foo": "foo" }, "expressionValues": { ":bar": ... typed value }, "returnValuesOnConditionCheckFailure": true|false } }, { "table":"table2", "operation": "UpdateItem", "key": { "foo": ... typed value, "bar": ... typed value }, "update": { "expression": "someExpression", "expressionNames": { "#foo": "foo" }, "expressionValues": { ":bar": ... typed value } }, "condition": { "expression": "someExpression", "expressionNames": { "#foo":"foo" }, "expressionValues": { ":bar": ... typed value }, "returnValuesOnConditionCheckFailure": true|false } }, { "table": "table3", "operation": "DeleteItem", "key":{ "foo": ... typed value, "bar": ... typed value }, "condition":{ "expression": "someExpression", "expressionNames": { "#foo": "foo" }, "expressionValues": { ":bar": ... typed value }, "returnValuesOnConditionCheckFailure": true|false } }, { "table": "table4", "operation": "ConditionCheck", "key":{ "foo": ... typed value, "bar": ... typed value }, "condition":{ "expression": "someExpression", "expressionNames": { "#foo": "foo" }, "expressionValues": { ":bar": ... typed value }, "returnValuesOnConditionCheckFailure": true|false } } ] }
TransactWriteItems champs
- Les champs sont définis comme suit :
-
-
version
-
Version de la définition du modèle. Seule la clause
2018-05-29
est prise en charge. Cette valeur est obligatoire. -
operation
-
L'opération DynamoDB à effectuer. Pour que vous puissiez effectuer l'opération DynamoDB
TransactWriteItems
, ce champ doit être défini surTransactWriteItems
. Cette valeur est obligatoire. -
transactItems
-
Les éléments de requête à inclure. La valeur est un tableau d'éléments de requête. Au moins un élément de requête doit être fourni. Cette valeur
transactItems
est obligatoire.Pour
PutItem
, les champs sont définis comme suit :-
table
-
La table DynamoDB de destination. La valeur est une chaîne du nom de la table. Cette valeur
table
est obligatoire. -
operation
-
L'opération DynamoDB à effectuer. Pour que vous puissiez effectuer l'opération DynamoDB
PutItem
, ce champ doit être défini surPutItem
. Cette valeur est obligatoire. -
key
-
La clé DynamoDB représentant la clé primaire de l'élément à insérer. Les éléments DynamoDB peuvent avoir une seule clé de hachage ou une clé de hachage et une clé de tri, selon la structure de la table. Pour plus d'informations sur la façon de spécifier une « valeur saisie », voir Système de types (mappage des demandes). Cette valeur est obligatoire.
-
attributeValues
-
Le reste des attributs de l'élément doit être placé dans DynamoDB. Pour plus d'informations sur la façon de spécifier une « valeur saisie », voir Système de types (mappage des demandes). Ce champ est facultatif.
-
condition
-
Condition permettant de déterminer si la demande doit réussir ou non, en fonction de l'état de l'objet déjà dans DynamoDB. Si aucune condition n'est spécifiée, la requête
PutItem
remplace toute entrée existante pour cet élément. Vous pouvez spécifier s'il faut récupérer l'élément existant en cas d'échec de la vérification de l'état. Pour plus d'informations sur les conditions transactionnelles, consultez la section Expressions des conditions de transaction. Cette valeur est facultative.
Pour
UpdateItem
, les champs sont définis comme suit :-
table
-
Table DynamoDB à mettre à jour. La valeur est une chaîne du nom de la table. Cette valeur
table
est obligatoire. -
operation
-
L'opération DynamoDB à effectuer. Pour que vous puissiez effectuer l'opération DynamoDB
UpdateItem
, ce champ doit être défini surUpdateItem
. Cette valeur est obligatoire. -
key
-
La clé DynamoDB représentant la clé primaire de l'élément à mettre à jour. Les éléments DynamoDB peuvent avoir une seule clé de hachage ou une clé de hachage et une clé de tri, selon la structure de la table. Pour plus d'informations sur la façon de spécifier une « valeur saisie », voir Système de types (mappage des demandes). Cette valeur est obligatoire.
-
update
-
La
update
section vous permet de spécifier une expression de mise à jour qui décrit comment mettre à jour l'élément dans DynamoDB. Pour plus d'informations sur la façon d'écrire des expressions de mise à jour, consultez la documentation UpdateExpressions DynamoDB. Cette section est obligatoire. -
condition
-
Condition permettant de déterminer si la demande doit réussir ou non, en fonction de l'état de l'objet déjà dans DynamoDB. Si aucune condition n'est spécifiée, la requête
UpdateItem
met à jour l'entrée existante quel que soit son état actuel. Vous pouvez spécifier s'il faut récupérer l'élément existant en cas d'échec de la vérification de l'état. Pour plus d'informations sur les conditions transactionnelles, consultez la section Expressions des conditions de transaction. Cette valeur est facultative.
Pour
DeleteItem
, les champs sont définis comme suit :-
table
-
Table DynamoDB dans laquelle vous souhaitez supprimer l'élément. La valeur est une chaîne du nom de la table. Cette valeur
table
est obligatoire. -
operation
-
L'opération DynamoDB à effectuer. Pour que vous puissiez effectuer l'opération DynamoDB
DeleteItem
, ce champ doit être défini surDeleteItem
. Cette valeur est obligatoire. -
key
-
La clé DynamoDB représentant la clé primaire de l'élément à supprimer. Les éléments DynamoDB peuvent avoir une seule clé de hachage ou une clé de hachage et une clé de tri, selon la structure de la table. Pour plus d'informations sur la façon de spécifier une « valeur saisie », voir Système de types (mappage des demandes). Cette valeur est obligatoire.
-
condition
-
Condition permettant de déterminer si la demande doit réussir ou non, en fonction de l'état de l'objet déjà dans DynamoDB. Si aucune condition n'est spécifiée, la requête
DeleteItem
supprime un élément existant quel que soit son état actuel. Vous pouvez spécifier s'il faut récupérer l'élément existant en cas d'échec de la vérification de l'état. Pour plus d'informations sur les conditions transactionnelles, consultez la section Expressions des conditions de transaction. Cette valeur est facultative.
Pour
ConditionCheck
, les champs sont définis comme suit :-
table
-
Table DynamoDB dans laquelle vérifier la condition. La valeur est une chaîne du nom de la table. Cette valeur
table
est obligatoire. -
operation
-
L'opération DynamoDB à effectuer. Pour que vous puissiez effectuer l'opération DynamoDB
ConditionCheck
, ce champ doit être défini surConditionCheck
. Cette valeur est obligatoire. -
key
-
La clé DynamoDB représentant la clé primaire de l'élément à vérifier. Les éléments DynamoDB peuvent avoir une seule clé de hachage ou une clé de hachage et une clé de tri, selon la structure de la table. Pour plus d'informations sur la façon de spécifier une « valeur saisie », voir Système de types (mappage des demandes). Cette valeur est obligatoire.
-
condition
-
Condition permettant de déterminer si la demande doit réussir ou non, en fonction de l'état de l'objet déjà dans DynamoDB. Vous pouvez spécifier s'il faut récupérer l'élément existant en cas d'échec de la vérification de l'état. Pour plus d'informations sur les conditions transactionnelles, consultez la section Expressions des conditions de transaction. Cette valeur est obligatoire.
-
-
Objets à mémoriser :
-
Seules les clés des éléments de demande sont renvoyées dans la réponse, si elles réussissent. L'ordre des clés sera le même que l'ordre des éléments de demande.
-
Les transactions sont effectuées d'une all-or-nothing manière ou d'une autre. Si un élément de requête provoque une erreur, la transaction entière ne sera pas effectuée et les détails de l'erreur seront retournés.
-
Aucun élément de demande ne peut cibler le même élément. Sinon, ils provoqueront une TransactionCanceledExceptionerreur.
-
Si l'erreur d'une transaction est TransactionCanceledExceptionsurvenue, le
cancellationReasons
bloc sera rempli. Si la vérification de l'état d'un élément de demande échoue et que vous n'avez pas spécifiéreturnValuesOnConditionCheckFailure
comme étantfalse
, l'élément existant dans la table est récupéré et stockéitem
à la position correspondante du bloccancellationReasons
. -
TransactWriteItems
est limité à 100 articles demandés. -
Cette opération n'est pas prise en charge lorsqu'elle est utilisée avec la détection de conflits. L'utilisation des deux en même temps peut entraîner une erreur.
Pour l'exemple de modèle de mappage de requête suivant :
{ "version": "2018-05-29", "operation": "TransactWriteItems", "transactItems": [ { "table": "posts", "operation": "PutItem", "key": { "post_id": { "S": "p1" } }, "attributeValues": { "post_title": { "S": "New title" }, "post_description": { "S": "New description" } }, "condition": { "expression": "post_title = :post_title", "expressionValues": { ":post_title": { "S": "Expected old title" } } } }, { "table":"authors", "operation": "UpdateItem", "key": { "author_id": { "S": "a1" }, }, "update": { "expression": "SET author_name = :author_name", "expressionValues": { ":author_name": { "S": "New name" } } }, } ] }
Si la transaction réussit, le résultat d'appel disponible dans $ctx.result
est le suivant :
{ "keys": [ // Key of the PutItem request { "post_id": "p1", }, // Key of the UpdateItem request { "author_id": "a1" } ], "cancellationReasons": null }
Si la transaction échoue en raison de l'échec de la vérification de l'état de la PutItem
demande, le résultat de l'invocation disponible $ctx.result
est le suivant :
{ "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
contient des détails sur l'erreur. Les clés cancellationReasonssont clés et leur présence est garantie$ctx.result
.
Pour un exemple plus complet, suivez le didacticiel sur les transactions DynamoDB AppSync avec ici Tutoriel : résolveurs de transactions DynamoDB.