TransactWriteItems - AWS AppSync

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 demande, 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 : PutItemUpdateItem, 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 sur TransactWriteItems. 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 sur PutItem. 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 sur UpdateItem. 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 sur DeleteItem. 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 sur ConditionCheck. 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 étant false, l'élément existant dans la table est récupéré et stocké item à la position correspondante du bloc cancellationReasons.

  • TransactWriteItemsest 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 gestionnaire de demandes 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 cancellationReasonssont clés et leur présence est garantiectx.result.