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
Il documento di mappatura delle TransactWriteItems
richieste consente di indicare al AWS AppSync resolver DynamoDB di TransactWriteItems
richiedere a DynamoDB di scrivere più elementi, potenzialmente su più tabelle. Per questo modello 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:,, e PutItemUpdateItemDeleteItemConditionCheck
-
La chiave di ogni elemento di richiesta da scrivere
Si applicano i limiti TransactWriteItems
DynamoDB.
Il documento di mappatura TransactWriteItems
ha la seguente struttura:
{ "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 campi
- I campi sono definiti come segue:
-
-
version
-
La versione di definizione del modello. Solo
2018-05-29
è supportata. Questo valore è obbligatorio. -
operation
-
L'operazione DynamoDB da eseguire. Per eseguire l'operazione
TransactWriteItems
DynamoDB, 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
PutItem
DynamoDB, 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 sola 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», consulta Sistema di tipi (mappatura delle richieste). Questo valore è obbligatorio.
-
attributeValues
-
Gli altri attributi della voce da inserir in DynamoDB. Per ulteriori informazioni su come specificare un «valore digitato», vedete 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
PutItem
sovrascrive 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
UpdateItem
DynamoDB, 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 sola 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», consulta Sistema di tipi (mappatura delle richieste). Questo valore è obbligatorio.
-
update
-
La
update
sezione 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 UpdateExpressions DynamoDB. 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
UpdateItem
aggiorna 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
DeleteItem
DynamoDB, 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 sola 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», consulta Sistema di tipi (mappatura delle richieste). 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
DeleteItem
elimina 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 controllare la condizione. Il valore è una stringa del nome della tabella. Questo valore
table
è obbligatorio. -
operation
-
L'operazione DynamoDB da eseguire. Per eseguire l'operazione
ConditionCheck
DynamoDB, il valore deve essere impostato suConditionCheck
. Questo valore è obbligatorio. -
key
-
La chiave DynamoDB che rappresenta la chiave primaria dell'elemento per il controllo delle condizioni. Gli elementi DynamoDB possono avere una sola 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», consulta Sistema di tipi (mappatura delle richieste). 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 in qualsiasi modo. all-or-nothing 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 causeranno TransactionCanceledExceptionerrori.
-
Se l'errore di una transazione è TransactionCanceledException, il
cancellationReasons
blocco verrà popolato. Se il controllo delle condizioni di un elemento di richiesta fallisce e non è stato specificatoreturnValuesOnConditionCheckFailure
comefalse
, l'elemento esistente nella tabella viene recuperato e memorizzato initem
nella posizione corrispondente del bloccocancellationReasons
. -
TransactWriteItems
è limitato a 100 articoli richiesti. -
Questa operazione non è supportata se utilizzata con il rilevamento dei conflitti. L'utilizzo di entrambi allo stesso tempo può causare un errore.
Per il seguente esempio di modello di mappatura della richiesta:
{ "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" } } }, } ] }
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 della 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. È garantito che le chiavi cancellationReasonssiano presenti in. $ctx.result
Per un esempio più completo, segui il tutorial sulle transazioni di DynamoDB AppSync con questo Tutorial: risolutori di transazioni DynamoDB.