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
L'objet de TransactWriteItems requête vous permet de demander à la fonction AWS AppSync DynamoDB de TransactWriteItems demander à DynamoDB d'écrire plusieurs éléments, éventuellement dans plusieurs tables. Pour cet objet de requête, vous devez spécifier les éléments suivants :
-
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 : PutItem UpdateItem, DeleteItem, et ConditionCheck
-
La clé de chaque élément de demande à écrire
Les limites TransactWriteItems DynamoDB s'appliquent.
La structure de l'objet de TransactWriteItems requête est la suivante :
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 champs
- Les champs sont définis comme suit :
-
-
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
transactItemsest 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
tableest 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 à placer. 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 typée », 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 typée », 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
PutItemremplace 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 -
La table DynamoDB à mettre à jour. La valeur est une chaîne du nom de la table. Cette valeur
tableest 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 typée », voir Système de types (mappage des demandes). Cette valeur est obligatoire.
-
update -
Cette
updatesection 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 DynamoDB UpdateExpressions . 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
UpdateItemmet à 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 -
Tableau DynamoDB dans lequel supprimer l'élément. La valeur est une chaîne du nom de la table. Cette valeur
tableest 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 qui représente 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 typée », 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
DeleteItemsupprime 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 -
Tableau DynamoDB dans lequel vérifier la condition. La valeur est une chaîne du nom de la table. Cette valeur
tableest 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 qui représente 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 typée », 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 de manière tout ou rien. 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 TransactionCanceledException erreur.
-
Si c'est l'erreur d'une transaction TransactionCanceledException, le
cancellationReasonsbloc sera rempli. Si la vérification de l'état d'un élément de demande échoue et que vous n'avez pas spécifiéreturnValuesOnConditionCheckFailurecomme étantfalse, l'élément existant dans la table est récupéré et stockéitemà la position correspondante du bloccancellationReasons. -
TransactWriteItemsest limité à 100 éléments de demande. -
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 gestionnaire de requêtes de fonction suivant :
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 }), }, }, ], }; }
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 clés et cancellationReasons sont nécessairement présentes dans ctx.result.