TransactGetItems - AWS AppSync

TransactGetItems

O objeto de solicitação TransactGetItems permite que você oriente a função do DynamoDB do AWS AppSync a fazer uma solicitação TransactGetItems ao DynamoDB para recuperar vários itens, potencialmente em diversas tabelas. Para esse objeto de solicitação, você deve especificar o seguinte:

  • O nome da tabela de cada item de solicitação de onde recuperar o item

  • A chave de cada item de solicitação a ser recuperado de cada tabela

Os limites TransactGetItems do DynamoDB se aplicam e nenhuma expressão de condição pode ser fornecida.

O objeto de solicitação TransactGetItems tem a seguinte estrutura:

type DynamoDBTransactGetItemsRequest = { operation: 'TransactGetItems'; transactItems: { table: string; key: { [key: string]: any }; projection?: { expression: string; expressionNames?: { [key: string]: string }; }[]; }; };

Os campos são definidos da seguinte forma:

Campos TransactGetItems

operation

A operação do DynamoDB para execução. Para executar a operação TransactGetItems do DynamoDB, ela deve ser definida como TransactGetItems. Este valor é obrigatório.

transactItems

Os itens de solicitação a serem incluídos. O valor é uma matriz de itens de solicitação. Pelo menos um item de solicitação deve ser fornecido. Este valor transactItems é obrigatório.

table

A tabela do DynamoDB da qual recuperar o item. O valor é uma string do nome da tabela. Este valor table é obrigatório.

key

A chave do DynamoDB representando a chave primária do item a ser recuperado. Os itens do DynamoDB podem ter uma única chave de hash ou uma chave de hash e uma chave de classificação, dependendo da estrutura da tabela. Para obter mais informações sobre como especificar um "valor digitado", consulte Sistema de tipo (Mapeamento de solicitação).

projection

Uma projeção usada para especificar os atributos a serem retornados da operação do DynamoDB. Para obter mais informações sobre projeções, consulte Projeções. Esse campo é opcional.

Informações importantes:

  • Se uma transação for bem-sucedida, a ordem dos itens recuperados no bloco items será a mesma que a ordem dos itens solicitados.

  • As transações são executadas na sua totalidade ou não são realizadas. Se algum item de solicitação causar um erro, não será executada a transação inteira e os detalhes do erro serão retornados.

  • Um item de solicitação que não pode ser recuperado não é um erro. Em vez disso, um elemento nulo aparece no bloco de itens na posição correspondente.

  • Se o erro de uma transação for TransactionCanceledException, o bloco cancellationReasons será preenchido. A ordem dos motivos de cancelamento no bloco cancellationReasons será a mesma que a ordem de itens solicitados.

  • TransactGetItems está limitado a 100 itens de solicitação.

Veja a seguir um exemplo de manipulador de solicitação de função:

import { util } from '@aws-appsync/utils'; export function request(ctx) { const { authorId, postId } = ctx.args; return { operation: 'TransactGetItems', transactItems: [ { table: 'posts', key: util.dynamodb.toMapValues({ postId }), }, { table: 'authors', key: util.dynamodb.toMapValues({ authorId }), }, ], }; }

Se a transação for bem-sucedida e somente o primeiro item solicitado for recuperado, o resultado de invocação disponível em ctx.result será o seguinte:

{ "items": [ { // Attributes of the first requested item "post_id": "p1", "post_title": "title", "post_description": "description" }, // Could not retrieve the second requested item null, ], "cancellationReasons": null }

Se a transação falhar devido a TransactionCanceledException causada pelo primeiro item de solicitação, o resultado de invocação disponível em ctx.result será o seguinte:

{ "items": null, "cancellationReasons": [ { "type":"Sample error type", "message":"Sample error message" }, { "type":"None", "message":"None" } ] }

O ctx.error contém detalhes sobre o erro. A presença dos itens de chaves e cancelationReasons está garantida em ctx.result.