Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
TransactWriteItems
L'oggetto TransactWriteItems request consente di dire alla funzione AWS AppSync DynamoDB di effettuare una TransactWriteItems richiesta a DynamoDB per scrivere più elementi, potenzialmente su più tabelle. Per questo oggetto di richiesta, è necessario specificare quanto segue:
-
Il nome della tabella di destinazione di ogni elemento di richiesta
-
L'operazione di ogni elemento di richiesta da eseguire. Sono supportati quattro tipi di operazioni: PutItem, UpdateItem DeleteItem, e ConditionCheck
-
La chiave di ogni elemento di richiesta da scrivere
Si applicano i limiti TransactWriteItems DynamoDB.
L'oggetto della TransactWriteItems richiesta ha la seguente struttura:
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 campi
- I campi sono definiti come segue:
-
-
operation -
L'operazione DynamoDB da eseguire. Per eseguire l'operazione
TransactWriteItemsDynamoDB, il valore deve essere impostato suTransactWriteItems. Questo valore è obbligatorio. -
transactItems -
Gli elementi di richiesta da includere. Il valore è un array di elementi di richiesta. Deve essere fornito almeno un elemento di richiesta. Questo valore
transactItemsè obbligatorio.Per
PutItem, i campi sono definiti come segue:-
table -
La tabella DynamoDB di destinazione. Il valore è una stringa del nome della tabella. Questo valore
tableè obbligatorio. -
operation -
L'operazione DynamoDB da eseguire. Per eseguire l'operazione
PutItemDynamoDB, il valore deve essere impostato suPutItem. Questo valore è obbligatorio. -
key -
La chiave DynamoDB che rappresenta la chiave primaria dell'elemento da inserire. Gli elementi DynamoDB possono avere una singola chiave hash o una chiave hash e una chiave di ordinamento, a seconda della struttura della tabella. Per ulteriori informazioni su come specificare un «valore digitato», vedi Type system (request mapping). Questo valore è obbligatorio.
-
attributeValues -
Gli altri attributi della voce da inserir in DynamoDB. Per ulteriori informazioni su come specificare un «valore digitato», vedere Type system (request mapping). Questo campo è facoltativo.
-
condition -
Una condizione per determinare se la richiesta deve riuscire o no in base allo stato dell'oggetto già incluso in DynamoDB. Se non viene specificata alcuna condizione, la richiesta
PutItemsovrascrive qualsiasi valore esistente per quella voce. È possibile specificare se recuperare l'elemento esistente quando il controllo delle condizioni non riesce. Per ulteriori informazioni sulle condizioni transazionali, consulta Espressioni delle condizioni di transazione. Questo valore è facoltativo.
Per
UpdateItem, i campi sono definiti come segue:-
table -
La tabella DynamoDB da aggiornare. Il valore è una stringa del nome della tabella. Questo valore
tableè obbligatorio. -
operation -
L'operazione DynamoDB da eseguire. Per eseguire l'operazione
UpdateItemDynamoDB, il valore deve essere impostato suUpdateItem. Questo valore è obbligatorio. -
key -
La chiave DynamoDB che rappresenta la chiave primaria dell'elemento da aggiornare. Gli elementi DynamoDB possono avere una singola chiave hash o una chiave hash e una chiave di ordinamento, a seconda della struttura della tabella. Per ulteriori informazioni su come specificare un «valore digitato», vedi Type system (request mapping). Questo valore è obbligatorio.
-
update -
La
updatesezione consente di specificare un'espressione di aggiornamento che descrive come aggiornare l'elemento in DynamoDB. Per ulteriori informazioni su come scrivere espressioni di aggiornamento, consulta la documentazione di DynamoDB UpdateExpressions . Questa sezione è obbligatoria. -
condition -
Una condizione per determinare se la richiesta deve riuscire o no in base allo stato dell'oggetto già incluso in DynamoDB. Se non viene specificata alcuna condizione, la richiesta
UpdateItemaggiorna qualsiasi valore esistente, indipendentemente dal suo stato attuale. È possibile specificare se recuperare l'elemento esistente quando il controllo delle condizioni non riesce. Per ulteriori informazioni sulle condizioni transazionali, consulta Espressioni delle condizioni di transazione. Questo valore è facoltativo.
Per
DeleteItem, i campi sono definiti come segue:-
table -
La tabella DynamoDB in cui eliminare l'elemento. Il valore è una stringa del nome della tabella. Questo valore
tableè obbligatorio. -
operation -
L'operazione DynamoDB da eseguire. Per eseguire l'operazione
DeleteItemDynamoDB, il valore deve essere impostato suDeleteItem. Questo valore è obbligatorio. -
key -
La chiave DynamoDB che rappresenta la chiave primaria dell'elemento da eliminare. Gli elementi DynamoDB possono avere una singola chiave hash o una chiave hash e una chiave di ordinamento, a seconda della struttura della tabella. Per ulteriori informazioni su come specificare un «valore digitato», vedi Type system (request mapping). Questo valore è obbligatorio.
-
condition -
Una condizione per determinare se la richiesta deve riuscire o no in base allo stato dell'oggetto già incluso in DynamoDB. Se non viene specificata alcuna condizione, la richiesta
DeleteItemelimina la voce indipendentemente dal suo stato attuale. È possibile specificare se recuperare l'elemento esistente quando il controllo delle condizioni non riesce. Per ulteriori informazioni sulle condizioni transazionali, consulta Espressioni delle condizioni di transazione. Questo valore è facoltativo.
Per
ConditionCheck, i campi sono definiti come segue:-
table -
La tabella DynamoDB in cui verificare la condizione. Il valore è una stringa del nome della tabella. Questo valore
tableè obbligatorio. -
operation -
L'operazione DynamoDB da eseguire. Per eseguire l'operazione
ConditionCheckDynamoDB, il valore deve essere impostato suConditionCheck. Questo valore è obbligatorio. -
key -
La chiave DynamoDB che rappresenta la chiave primaria dell'elemento da verificare. Gli elementi DynamoDB possono avere una singola chiave hash o una chiave hash e una chiave di ordinamento, a seconda della struttura della tabella. Per ulteriori informazioni su come specificare un «valore digitato», vedi Type system (request mapping). Questo valore è obbligatorio.
-
condition -
Una condizione per determinare se la richiesta deve riuscire o no in base allo stato dell'oggetto già incluso in DynamoDB. È possibile specificare se recuperare l'elemento esistente quando il controllo delle condizioni non riesce. Per ulteriori informazioni sulle condizioni transazionali, consulta Espressioni delle condizioni di transazione. Questo valore è obbligatorio.
-
-
Aspetti da ricordare:
-
Solo le chiavi degli elementi della richiesta vengono restituite nella risposta, in caso di esito positivo. L'ordine delle chiavi sarà lo stesso dell'ordine degli elementi della richiesta.
-
Le transazioni vengono eseguite completamente o non vengono eseguite affatto. Se un elemento di richiesta causa un errore, l'intera transazione non viene eseguita e vengono restituiti i dettagli dell'errore.
-
Nessun elemento di richiesta può scegliere come target lo stesso elemento. Altrimenti TransactionCanceledException causeranno un errore.
-
Se l'errore di una transazione è TransactionCanceledException, il
cancellationReasonsblocco verrà popolato. Se il controllo delle condizioni di un elemento di richiesta fallisce e non è stato specificatoreturnValuesOnConditionCheckFailurecomefalse, l'elemento esistente nella tabella viene recuperato e memorizzato initemnella posizione corrispondente del bloccocancellationReasons. -
TransactWriteItemsè limitato a 100 elementi richiesti. -
Questa operazione non è supportata se utilizzata con il rilevamento dei conflitti. L'utilizzo di entrambi contemporaneamente può causare un errore.
Per il seguente esempio di function request handler:
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 }), }, }, ], }; }
Se la transazione ha esito positivo, il risultato della chiamata disponibile in ctx.result è il seguente:
{ "keys": [ // Key of the PutItem request { "post_id": "p1", }, // Key of the UpdateItem request { "author_id": "a1" } ], "cancellationReasons": null }
Se la transazione fallisce a causa del fallimento del controllo delle condizioni della PutItem richiesta, il risultato di chiamata disponibile in ctx.result è il seguente:
{ "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" } ] }
Il messaggio ctx.error contiene dettagli relativi all'errore. La presenza delle chiavi keys e cancellationReasons è garantita in ctx.result.