As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
O documento de mapeamento de BatchPutItem
solicitações permite que você peça ao AWS AppSync resolvedor do DynamoDB que faça uma BatchWriteItem
solicitação ao DynamoDB para colocar vários itens, potencialmente em várias tabelas. Para esse modelo de solicitação, você deve especificar o seguinte:
-
Os nomes da tabela na qual inserir os itens
-
Os itens completos a serem inseridos em cada tabela
Os limites BatchWriteItem
do DynamoDB se aplicam e nenhuma expressão de condição pode ser fornecida.
O documento de mapeamento BatchPutItem
possui a seguinte estrutura:
{
"version" : "2018-05-29",
"operation" : "BatchPutItem",
"tables" : {
"table1": [
## Item to put
{
"foo" : ... typed value,
"bar" : ... typed value
},
## Item2 to put
{
"foo" : ... typed value,
"bar" : ... typed value
}],
"table2": [
## Item3 to put
{
"foo" : ... typed value,
"bar" : ... typed value
},
## Item4 to put
{
"foo" : ... typed value,
"bar" : ... typed value
}],
}
}
Os campos são definidos da seguinte forma:
BatchPutItem campos
-
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
BatchPutItem
do DynamoDB, ela deve ser definida comoBatchPutItem
. Este valor é obrigatório. -
tables
-
As tabelas do DynamoDB nas quais inserir os itens. Cada entrada da tabela representa uma lista de itens do DynamoDB a serem inseridos nesta tabela específica. Pelo menos uma tabela deve ser fornecida. Este valor é obrigatório.
Informações importantes:
-
Os itens totalmente inseridos são retornados na resposta, se bem-sucedidos.
-
Se um item não tiver sido inserido na tabela, um elemento nulo será exibido no bloco de dados dessa tabela.
-
Os itens inseridos são classificados por tabela, com base na ordem em que foram fornecidos dentro do modelo de mapeamento de solicitação.
-
Cada comando
Put
dentro de umBatchPutItem
é 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. -
O
BatchPutItem
é limitado a 25 itens. -
Essa operação não é compatível quando usada com detecção de conflitos. Usar ambos ao mesmo tempo pode gerar um erro.
Para o seguinte exemplo do modelo de mapeamento de solicitação:
{
"version": "2018-05-29",
"operation": "BatchPutItem",
"tables": {
"authors": [
{
"author_id": {
"S": "a1"
},
"author_name": {
"S": "a1_name"
}
},
],
"posts": [
{
"author_id": {
"S": "a1"
},
"post_id": {
"S": "p2"
},
"post_title": {
"S": "title"
}
}
],
}
}
O resultado de invocação disponível em $ctx.result
é o seguinte:
{
"data": {
"authors": [
null
],
"posts": [
# Was inserted
{
"author_id": "a1",
"post_id": "p2",
"post_title": "title"
}
]
},
"unprocessedItems": {
"authors": [
# This item was not processed due to an error
{
"author_id": "a1",
"author_name": "a1_name"
}
],
"posts": []
}
}
O $ctx.error
contém detalhes sobre o erro. As chaves data, unprocessedItems 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 inseridos estão no bloco data. Itens que não foram processados são marcados como nulos no bloco de dados e colocados dentro do bloco unprocessedItems.
Para obter um exemplo mais completo, siga o tutorial do DynamoDB Batch aqui AppSync Tutorial: resolvedores de lotes do DynamoDB.