BatchGetItem
O documento de mapeamento de solicitação BatchGetItem permite que você oriente o resolvedor do AWS AppSync a fazer uma solicitação BatchGetItem ao DynamoDB para recuperar vários itens, potencialmente em diversas tabelas. Para esse modelo de solicitação, você deve especificar o seguinte:
-
Os nomes da tabela da qual recuperar os itens
-
As chaves dos itens a serem recuperadas de cada tabela
Os limites BatchGetItem do DynamoDB se aplicam e nenhuma expressão de condição pode ser fornecida.
O documento de mapeamento BatchGetItem possui a seguinte estrutura:
{ "version" : "2018-05-29", "operation" : "BatchGetItem", "tables" : { "table1": { "keys": [ ## Item to retrieve Key { "foo" : ... typed value, "bar" : ... typed value }, ## Item2 to retrieve Key { "foo" : ... typed value, "bar" : ... typed value } ], "consistentRead": true|false, "projection" : { ... } }, "table2": { "keys": [ ## Item3 to retrieve Key { "foo" : ... typed value, "bar" : ... typed value }, ## Item4 to retrieve Key { "foo" : ... typed value, "bar" : ... typed value } ], "consistentRead": true|false, "projection" : { ... } } } }
Os campos são definidos da seguinte forma:
Campos BatchGetItem
-
version -
A versão de definição do modelo. Somente
2018-05-29é suportado. Este valor é obrigatório. -
operation -
A operação do DynamoDB para execução. Para executar a operação
BatchGetItemdo DynamoDB, ela deve ser definida comoBatchGetItem. Este valor é obrigatório. -
tables -
As tabelas do DynamoDB das quais recuperar os itens. O valor é um mapa no qual os nomes das tabelas são especificados como as chaves do mapa. Pelo menos uma tabela deve ser fornecida. Este valor
tablesé obrigatório.-
keys -
Lista de chaves do DynamoDB representando a chave primária dos itens a serem recuperados. 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).
-
consistentRead -
Se deve usar uma leitura consistente ao executar uma operação GetItem. Esse valor é opcional e o padrão é falso.
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 um item não tiver sido recuperado da tabela, um elemento nulo aparecerá no bloco de dados dessa tabela.
-
Os resultados de invocação são classificados por tabela, com base na ordem em que foram fornecidos dentro do modelo de mapeamento de solicitação.
-
Cada comando
Getdentro de umBatchGetItemé atômico, no entanto, um lote pode ser parcialmente processado. Se um lote for parcialmente processado devido a um erro, as chaves não processadas serão retornadas como parte do resultado da chamada dentro do bloco unprocessedKeys. -
BatchGetItemO é limitado a 100 chaves.
Para o seguinte exemplo do modelo de mapeamento de solicitação:
{ "version": "2018-05-29", "operation": "BatchGetItem", "tables": { "authors": [ { "author_id": { "S": "a1" } }, ], "posts": [ { "author_id": { "S": "a1" }, "post_id": { "S": "p2" } } ], } }
O resultado de invocação disponível em $ctx.result é o seguinte:
{ "data": { "authors": [null], "posts": [ # Was retrieved { "author_id": "a1", "post_id": "p2", "post_title": "title", "post_description": "description", } ] }, "unprocessedKeys": { "authors": [ # This item was not processed due to an error { "author_id": "a1" } ], "posts": [] } }
O $ctx.error contém detalhes sobre o erro. As chaves data, unprocessedKeys e todas as chaves de tabela fornecidas no modelo de mapeamento de solicitação estão presentes no resultado da invocação. Os itens que foram excluídos aparecem no bloco data. Itens que não foram processados são marcados como nulos no bloco de dados e colocados dentro do bloco unprocessedKeys.
Para obter um exemplo mais completo, siga o tutorial de Lote do DynamoDB com o AppSync aqui Tutorial: Resolvedores de lote do DynamoDB.