Erros do DynamoDB

Erros comuns do DynamoDB (e como corrigi-los)

Os erros do DynamoDB que os desenvolvedores mais enfrentam — cada um com o que significa, por que acontece e a correção exata.

Erros de validação e expressões (52)

DynamoDB ValidationException — Causas & Como Corrigir
Um ValidationException do DynamoDB significa que a requisição foi rejeitada como malformada antes de rodar. Os gatilhos comuns, a mensagem e a correção.
"Query condition missed key schema element" — Correção do DynamoDB
Query condition missed key schema element significa que seu KeyConditionExpression não tem uma igualdade na chave de partição. Consulte um GSI ou use Scan.
"The provided key element does not match the schema" — Correção do DynamoDB
Este ValidationException significa que o nome ou tipo de um atributo de chave não bate com o KeySchema — chave de ordenação ausente ou número como string.
Erro de sintaxe UpdateExpression inválido – Correção DynamoDB
Uma UpdateExpression inválida geralmente é uma palavra-chave reservada usada bruta ou um espaço reservado #name ou :value ausente. Nomes reservados de alias com ExpressionAttributeNames e valores de ligação com ExpressionAttributeValues.
"ExpressionAttributeValues contém valor inválido" — Correção DynamoDB
Esta ValidationException significa que um valor em ExpressionAttributeValues está vazio, é do tipo errado ou é um espaço reservado que sua expressão nunca definiu.
"Item size has exceeded the maximum allowed size" — Correção do DynamoDB
Itens do DynamoDB são limitados a 400 KB. Este ValidationException significa que seu item passou do limite — como medir o tamanho e voltar para baixo dele.
DynamoDB ConditionalCheckFailedException — Causas & Correção
ConditionalCheckFailedException significa que sua ConditionExpression avaliou como falso, então o DynamoDB rejeitou a escrita e deixou o item inalterado.
DynamoDB TransactionCanceledException — Decodifique os Cancellation Reasons
TransactionCanceledException significa que um item falhou e a transação inteira foi revertida. Leia o array CancellationReasons para achar qual e por quê.
DynamoDB SerializationException — Causas & Correção
SerializationException significa que seu JSON não bate com o formato de fio do DynamoDB — um número como string. Corrija os wrappers de AttributeValue.
"Supplied AttributeValue is empty" — Correção do DynamoDB
Este ValidationException indica que um AttributeValue não tem valor tipado — set vazio, string de chave vazia ou campo indefinido. Remova-o ou dê um valor.
"One or more parameter values were invalid" — Correção do DynamoDB
ValidationException marca o valor que quebra uma regra do DynamoDB — set vazio, string de chave vazia ou tipo incompatível. A mensagem nomeia o parâmetro.
"Invalid size for parameter" — Correção de Gravação Vetorial do DynamoDB
O DynamoDB rejeita uma gravação vetorial quando a contagem de dimensões do embedding não corresponde ao índice vetorial. A mensagem nomeia o atributo e os dois tamanhos.
"Search vector contains invalid values" — Correção do DynamoDB
O SearchVectors rejeita um vetor de consulta envolvido no tipo L do DynamoDB ou carregando valores que não são float. O parâmetro é um array JSON puro, não um atributo List.
"SearchConditionExpression must be provided" — Correção do DynamoDB
Um índice vetorial com uma chave HASH no search schema exige que toda chamada SearchVectors fixe exatamente um valor de partição. O filtro deixou de ser opcional na criação do índice.
"Query key condition not supported" — Correção do DynamoDB
O DynamoDB rejeita um KeyConditionExpression com operador proibido pelo key schema — chaves de partição só aceitam igualdade. Os operadores permitidos.
"Attribute name is a reserved keyword" — Correção do DynamoDB
O DynamoDB rejeita palavras reservadas como status, name ou size como nomes de atributo. Aliase com um placeholder ExpressionAttributeNames, como #status.
"Float types are not supported" — Correção do DynamoDB boto3
O boto3 lança TypeError "Float types are not supported" porque o DynamoDB armazena decimais exatos. Converta floats para decimal.Decimal pela forma de string.
"Number overflow" — Correção do Limite de Tamanho de Número do DynamoDB
O tipo N do DynamoDB guarda 38 dígitos de precisão e magnitude de até ~9.9E+125. Além disso, armazene IDs grandes e valores de alta precisão como strings.
"The provided expression refers to an attribute that does not exist" — Correção
Seu UpdateExpression ou ConditionExpression cita um caminho que não está no item — falta o map pai, erro de digitação ou cálculo sobre atributo ausente.
"Provided list of item keys contains duplicates" (BatchGetItem) — Correção
O DynamoDB rejeita um BatchGetItem quando a lista Keys de uma tabela repete uma chave primária. O lote todo falha: de-duplique as chaves antes de enviar.
"Provided list of item keys contains duplicates" (BatchWriteItem) — Correção
O DynamoDB rejeita um BatchWriteItem quando duas ações miram a mesma chave primária. Um lote não pode tocar um item duas vezes, então colapse as duplicatas.
"O tamanho da expressão excedeu o tamanho máximo permitido" (4 KB) — Correção
DynamoDB limita cada string de expressão em 4 KB. Um FilterExpression, ConditionExpression ou UpdateExpression passado que foi rejeitado. Como encolher.
"O tamanho agregado de todas as chaves de intervalo excedeu o limite de tamanho" — Correção
DynamoDB limita uma chave de classificação em 1.024 bytes e uma chave de partição em 2.048 bytes. Reduza os valores dos atributos principais ou faça hash de identificadores longos antes de armazená-los.
"A expressão de filtro só pode conter atributos de chave não primários" — Correção
DynamoDB rejeita uma FilterExpression que nomeia uma partição ou chave de classificação. As chaves pertencem à KeyConditionExpression — veja como reestruturar a consulta.
Limite de 100 itens do DynamoDB BatchGetItem — correção de "Too Many Items"
BatchGetItem aceita no máximo 100 itens (e 16 MB) por chamada. Peça mais e o DynamoDB rejeitará todo o pedido. O limite, mais o loop de chunking.
"Muitos itens solicitados para a chamada BatchWriteItem" — Correção
BatchWriteItem aceita no máximo 25 ações de colocação ou exclusão por chamada. Envie mais e DynamoDB rejeitará toda a solicitação com uma ValidationException.
DynamoDB "Can Not Use Both Expression and Non-Expression Parameters" — Correção
DynamoDB rejeita uma solicitação que mistura um parâmetro legado como KeyConditions com KeyConditionExpression. Elimine o parâmetro legado e use expressões.
"Local secondary indexes must be specified at table creation" — Correção
Um índice secundário local só pode ser definido quando a tabela é criada, nunca adicionado posteriormente. Por que a restrição existe e como contorná-la.
DynamoDB TransactionCanceledException — Corrigir ConditionalCheckFailed
Um TransactWriteItems cancelado com ConditionalCheckFailed significa que a condição de um item falhou e reverteu a transação inteira. Como descobrir qual foi.
"Valor fornecido em ExpressionAttributeNames não utilizado em expressões" — Correção
DynamoDB rejeita uma solicitação que declara um alias ExpressionAttributeNames sem referências de expressão. Remova-o ou corrija a expressão que o perdeu.
"Valor fornecido em ExpressionAttributeValues não utilizado em expressões" — Correção
DynamoDB rejeita uma solicitação que declara um espaço reservado ExpressionAttributeValues que nenhuma expressão usa. Remova o valor órfão ou corrija a expressão.
Falha na importação de DynamoDB S3 – Correção de formato inválido
A importação de DynamoDB de S3 falha quando os objetos não correspondem ao InputFormat declarado ou à compactação, ou quando os itens não possuem a chave primária.
"Size of hashkey has exceeded the maximum size limit of 2048 bytes" — Correção
Uma chave de partição DynamoDB pode ter no máximo 2.048 bytes e uma chave de classificação 1.024 bytes. Exceda qualquer um deles e a gravação será rejeitada – veja como redesenhar a chave.
DynamoDB GSI "Does Not Project" Atributo — Correção
Um GSI retorna apenas os atributos de chave mais a sua projeção, então consultá-lo por outro atributo falha. Mude a projeção ou a requisição — veja como.
"Os níveis de aninhamento excederam os limites suportados" — DynamoDB 32-Level Fix
O DynamoDB limita o mapeamento e o aninhamento de lista em 32 níveis - documentos mais profundos geram "Os níveis de aninhamento excederam os limites suportados". Achate mapas e listas aninhados abaixo de 32 níveis.
"Segment must be less than TotalSegments" — Correção de Scan paralelo
A varredura paralela requer 0 ≤ Segmento < TotalSegments e ambos devem ser enviados juntos. Dê a cada trabalhador um segmento distinto de 0 a TotalSegments − 1.
DynamoDB "Cannot Specify AttributesToGet When Select Is COUNT" — Correção
DynamoDB rejeita uma consulta ou varredura que define Select=COUNT com ProjectionExpression ou AttributesToGet. COUNT retorna um número, então elimine a projeção.
Streams DynamoDB “O ARN fornecido é inválido” – Correção
DynamoDB Streams rejeita um fluxo malformado ou de espaço reservado ARN como /stream/latest. Passe o LatestStreamArn real que DescribeTable retorna, literalmente.
"A solicitação de transação não pode incluir múltiplas operações em um item" — Correção
DynamoDB rejeita uma chamada TransactWriteItems quando duas ações têm como alvo a mesma chave primária. Recolha as duplicatas ou mova uma para uma gravação separada.
Limite de 100 ações do DynamoDB TransactWriteItems - Correção
TransactWriteItems tem limite de 100 ações; além disso, você obtém uma ValidationException no comprimento de TransactItems. Divida ou use BatchWriteItem a 25 por chamada.
DynamoDB TTL Attribute Precisa Ser um Number — Causas & Correção
O TTL do DynamoDB só expira itens cujo atributo TTL é um Number em segundos de época Unix. String, milissegundos ou atributo ausente nunca expiram.
DynamoDB “A expressão não pode estar vazia” — Correção
DynamoDB rejeita um parâmetro de expressão passado como uma string vazia. Omita FilterExpression ou UpdateExpression totalmente quando não tiver nada para enviar.
"ExpressionAttributeNames contém chave inválida: erro de sintaxe" — Correção
DynamoDB rejeita um mapa ExpressionAttributeNames cuja chave de espaço reservado quebra a sintaxe `#name`. A regra de nomenclatura e onde o nome real pertence.
"Two document paths overlap with each other" (DynamoDB) — Correção
O DynamoDB rejeita um UpdateExpression que define um caminho pai e outro aninhado dentro dele. Junte o filho no pai, ou divida em duas atualizações.
"The document path provided in the update expression is invalid" — Correção
Um document path inválido significa que o pai do seu atributo aninhado não existe ou não é um map. O DynamoDB nunca o cria sozinho, então crie o pai primeiro.
"Um operando na expressão de atualização possui um tipo de dados incorreto" — Correção
O tipo do operando de atualização não corresponde ao que está armazenado - ADD em um não-número, list_append em um não-lista, um conjunto incompatível.
DynamoDB IdempotentParameterMismatchException — Causas & Correção
O TransactWriteItems rejeita um retry que reutiliza um ClientRequestToken com outro payload na janela de idempotência de 10 minutos. Veja a correção.
"Leituras consistentes não são suportadas em índices secundários globais" — Correção
Consultar um GSI com ConsistentRead true gera uma ValidationException. Os GSIs servem apenas para leituras eventualmente consistentes. Solte o sinalizador ou leia a tabela base.
DynamoDB DuplicateItemException (PartiQL INSERT) — Causas & Correção
O PartiQL INSERT falha com DuplicateItemException quando a chave primária já existe. Ao contrário do PutItem, ele nunca sobrescreve — use UPDATE ou PutItem.
"Inesperado da fonte" (DynamoDB PartiQL) - Correção
PartiQL lança "Inesperado da origem" quando um nome de tabela com travessões ou outros caracteres especiais não está entre aspas duplas em FROM. Um par de citações corrige isso.
boto3 "Parameter validation failed" (ParamValidationError) — Correção
O botocore lança ParamValidationError antes de a requisição chegar ao DynamoDB — em geral uma confusão de tipos client-vs-resource. Como lê-la e corrigi-la.
"A chave inicial fornecida é inválida" (DynamoDB) — Correção
DynamoDB rejeita um ExclusiveStartKey que não corresponde ao esquema de chave da tabela ou índice que você está paginando. Passe LastEvaluatedKey de volta literalmente.

Erros de throughput e throttling (11)

DynamoDB ProvisionedThroughputExceededException — Causas & Correção
O DynamoDB lança ProvisionedThroughputExceededException quando leituras ou escritas passam da capacidade provisionada da tabela ou do GSI. Eis a correção.
DynamoDB ThrottlingException – Causas e correção
ThrottlingException significa que sua taxa de solicitação ultrapassou um limite, geralmente em chamadas de control-plane como CreateTable. Tente novamente com espera exponencial e diminua a velocidade.
DynamoDB ItemCollectionSizeLimitExceededException – Causas e correção
Este erro atinge apenas tabelas com um Índice Secundário Local — uma coleção de itens (todos os itens compartilhando uma chave de partição) ultrapassou 10 GB.
DynamoDB RequestLimitExceeded — Causas & Correção
RequestLimitExceeded é um limite de taxa da conta — on-demand tem 40.000 unidades de requisição de leitura e escrita por segundo. Eleve no Service Quotas.
DynamoDB TransactionConflictException – Causas e correção
TransactionConflictException significa que outra transação já está tocando no mesmo item. É transitório: tente novamente com espera e mantenha as transações pequenas.
"Provisioned throughput decreases are limited within a given day" — Correção
O DynamoDB limita quantas vezes você reduz a capacidade provisionada de uma tabela por dia UTC. A conta da quota e as saídas para o erro do UpdateTable.
DynamoDB On-Demand Throughput Exceeded — Causas & Correção
Tabelas on-demand também fazem throttle — throughput máximo configurado, rampa além do dobro do pico anterior ou quota de tabela. Como elevar os limites.
DynamoDB estrangulado apesar da capacidade – Correção de partição dinâmica
O DynamoDB limita uma chave de partição ativa mesmo com capacidade de tabela sobressalente, porque cada partição física tem um limite de 3.000 RCU e 1.000 WCU.
DynamoDB TransactionInProgressException – Causas e correção
Uma nova tentativa de TransactWriteItems reutilizou o ClientRequestToken de uma tentativa ainda em execução. Continue tentando novamente com espera e ajuste os tempos limite após 5 segundos.
DynamoDB InternalServerError (HTTP 500) – O que fazer
Um HTTP 500 do DynamoDB é uma falha transitória do lado do serviço, segura para tentar novamente – mas uma gravação com falha ainda pode ter sido aplicada. Tente novamente com espera; confirme a gravação antes de assumir a falha.
DynamoDB ReplicatedWriteConflictException – Causas e correção
Em uma tabela global fortemente consistente de várias regiões, uma gravação é rejeitada quando outra região está modificando o mesmo item. É retentável – veja como.

Erros de tabelas e recursos (19)

DynamoDB ResourceNotFoundException – Causas e correção
ResourceNotFoundException significa que a tabela ou índice não existe na região e na conta que você está chamando. Verifique o nome, região e credenciais.
DynamoDB ResourceInUseException ("Tabela já existe") — Correção
ResourceInUseException significa que a tabela já existe ou ainda está CRIANDO, ATUALIZANDO ou EXCLUINDO. Verifique seu status com DescribeTable antes de agir.
DynamoDB LimitExceededException – Causas e correção
LimitExceededException significa muitas chamadas simultâneas de CreateTable, UpdateTable ou DeleteTable ou um limite de conta atingido. Serialize chamadas do control-plane e permaneça dentro das cotas da conta.
"A tabela não possui o índice especificado" — Correção
DynamoDB rejeita a chamada porque IndexName não existe nessa tabela, está escrito incorretamente ou GSI ainda não está ATIVO. Confirme IndexName na tabela e se o GSI está ATIVO.
DynamoDB BackupNotFoundException – Causas e correção
DynamoDB BackupNotFoundException significa que nenhum backup corresponde ao BackupArn que você passou. Geralmente um ARN errado, um backup excluído ou expirado ou a região errada.
DynamoDB ReplicaNotFoundException – Causas e correção
ReplicaNotFoundException significa que a réplica da região que você está atualizando não está na tabela global — uma região errada, uma réplica removida ou uma corrida.
"Tentativa de modificar um GSI que está sendo criado" — Correção
DynamoDB bloqueia mudanças estruturais enquanto um índice secundário global ainda está em construção. Aguarde até que IndexStatus alcance ACTIVE ou sequencie suas alterações.
DynamoDB ExportTableToPointInTime — corrigir PITR desativado
O ExportTableToPointInTime exige point-in-time recovery na tabela de origem, senão lança PointInTimeRecoveryUnavailableException. A correção de um comando.
Incompatibilidade de versão da tabela global DynamoDB – Causas e correção
A criação de tabelas globais falha quando as réplicas não se alinham: tabelas não vazias, esquemas de chaves ou GSIs incompatíveis ou uma combinação das versões API 2017 e 2019.
DynamoDB LSI Limite de 10 GB da coleção de itens – Causas e correção
As tabelas com um índice secundário local limitam cada coleção de itens a 10 GB – cruze-o e as escritas falharão. Monitore ItemCollectionMetrics e refaça o fragmento.
DynamoDB não consegue acessar o stream – Correção de stream não habilitado
Um consumidor leu um stream DynamoDB em uma tabela com Streams desativado ou usou um ARN obsoleto. Habilite Streams e aponte-o para o LatestStreamArn atual.
DynamoDB TableAlreadyExistsException / “A tabela já existe” – Correção
Restaura throw TableAlreadyExistsException; Relatório CreateTable e ImportTable ResourceInUseException. O nome do destino já está em uso, então escolha um novo.
DynamoDB Streams ExpiredIteratorException — Causas & Correção
Um shard iterator do DynamoDB Streams vale 15 minutos. Use-o depois disso e o GetRecords lança ExpiredIteratorException. Como retomar sem perder dados.
DynamoDB Streams TrimmedDataAccessException – Causas e correção
Os registros de streaming ficam ativos 24 horas, portanto, um ponto de verificação anterior a esse gera TrimmedDataAccessException. Retome de TRIM_HORIZON e reconcilie a partir da tabela.
DynamoDB BackupInUseException – Causas e correção
DynamoDB BackupInUseException significa que outra operação de backup na mesma tabela ainda está em execução. Aguarde a conclusão e tente novamente a chamada.
DynamoDB InvalidRestoreTimeException – Causas e correção
InvalidRestoreTimeException significa que seu RestoreDateTime fica fora da janela PITR da tabela de até 35 dias. Escolha um RestoreDateTime dentro da janela PITR da tabela (até 35 dias).
DynamoDB PointInTimeRecoveryUnavailableException – Correção
Você tentou uma restauração pontual em uma tabela que nunca teve o PITR ativado. Habilite backups contínuos agora e use um backup on-demand para os dados atuais.
DynamoDB GlobalTableNotFoundException – Causas e correção
GlobalTableNotFoundException significa que os APIs da tabela global herdada não podem ver sua tabela – geralmente uma tabela global 2019.11.21 gerenciada por meio de UpdateTable.
DynamoDB ReplicaAlreadyExistsException – Causas e correção
Você pediu ao DynamoDB para adicionar uma região de réplica já na tabela global. Descreva primeiro o grupo de replicação e torne o gerenciamento de réplicas idempotente.

Erros de autenticação e configuração (13)

"not authorized to perform dynamodb:..." — Correção de AccessDeniedException
DynamoDB AccessDeniedException significa que sua identidade IAM não está autorizada para a ação nomeada na mensagem. Como ler e corrigir a política IAM.
"ConfigError: região ausente na configuração" — Correção DynamoDB
O SDK AWS não conseguiu descobrir para qual região enviar solicitações DynamoDB. Configure-o no cliente, via AWS_REGION ou na configuração do AWS - aqui estão cada opção.
"O token de segurança incluído na solicitação é inválido" — Correção DynamoDB
Esta UnrecognizedClientException significa que suas credenciais AWS estão erradas, expiraram ou não foram coletadas. Verifique as chaves de acesso, a expiração do token de sessão e qual perfil o SDK carregou.
DynamoDB IncompleteSignatureException – Causas e correção
IncompleteSignatureException significa que a assinatura SigV4 foi malformada – geralmente assinatura rolada manualmente ou um proxy que reescreveu o cabeçalho de autorização.
"O token de segurança incluído na solicitação expirou" — DynamoDB Fix
ExpiredTokenException significa que suas credenciais temporárias de STS, SSO ou função assumida expiraram. Execute novamente o login do aws sso e limpe qualquer AWS_SESSION_TOKEN obsoleto.
"Não foi possível localizar credenciais" (boto3/DynamoDB) — Correção
boto3 gera NoCredentialsError quando nada em sua cadeia de provedores fornece credenciais AWS - sem env vars, sem perfil, sem função de instância.
"A assinatura da solicitação que calculamos não corresponde" — Correção
DynamoDB retorna InvalidSignatureException, não SignatureDoesNotMatch, quando a assinatura SigV4 falha. Normalmente, uma chave secreta errada ou um relógio distorcido em sua máquina.
"Credential should be scoped to a valid region" — Correção do DynamoDB
Este erro SigV4 significa que a region no escopo da sua credencial não bate com a region que você chamou. Como alinhar as regions do cliente e do endpoint.
"InvalidSignatureException: Assinatura expirada" — Correção DynamoDB
DynamoDB rejeita uma solicitação cujo carimbo de data/hora assinado está a mais de cinco minutos do horário do servidor AWS. Quase sempre o relógio do cliente está distorcido – veja como consertar isso.
"Token de autenticação ausente" — Correção de erro DynamoDB
Uma MissingAuthenticationTokenException de DynamoDB significa um endpoint URL ou caminho errado, ou uma solicitação que nunca foi assinada. Verifique o endpoint URL, caminho e se a solicitação é assinada pelo SigV4.
"Could not load credentials from any providers" (DynamoDB) — Correção
O AWS SDK para JavaScript v3 lança CredentialsProviderError quando toda a cadeia de credenciais fica vazia. Como a cadeia resolve e a correção de cada caso.
"The SSO session associated with this profile has expired" — Correção
Um token expirado do IAM Identity Center interrompe as chamadas CLI e SDK do AWS para DynamoDB. Execute aws sso login e limpe um obsoleto ~/.aws/sso/cache se isso não for suficiente.
"The config profile could not be found" — Correção para AWS CLI e boto3
A CLI do AWS e o boto3 geram ProfileNotFound quando o perfil nomeado está ausente em ~/.aws/config. As três causas usuais e a solução para cada uma.

Erros do DynamoDB Local e de configuração (8)

"Não é possível iniciar o processo local DynamoDB" – Correção
Falha ao iniciar o DynamoDB Local – geralmente um tempo de execução Java /incompatible ausente, uma porta já em uso ou um caminho de instalação incorreto. Verifique o tempo de execução do Java, os conflitos de porta e o caminho de instalação.
"Could not connect to DynamoDB Local" (ECONNREFUSED) — Correção
ECONNREFUSED contra o DynamoDB Local significa que ninguém está escutando — o emulador parado, a porta errada, ou o SDK acessando a AWS real.
"Could not connect to the endpoint URL" (DynamoDB) — Correção
botocore gera EndpointConnectionError quando não consegue alcançar DynamoDB. Geralmente um endpoint errado URL, DynamoDB Local não está em execução ou uma região ruim.
DynamoDB Local "Address already in use" (porta 8000) — Correção
O DynamoDB Local lança java.net.BindException quando algo já ocupa a porta 8000. Como achar o processo, liberar a porta ou iniciar o Local em outra porta.
DynamoDB Local "Failed to load native library sqlite4java" — Correção
O DynamoDB Local morre na inicialização com UnsatisfiedLinkError do sqlite4java, por java.library.path errado ou arquitetura incompatível no Apple Silicon.
"Não é possível executar a solicitação HTTP" (DynamoDB, Java SDK) — Correção
O SDK AWS para Java falha com Não é possível executar a solicitação HTTP quando não consegue alcançar o terminal. DynamoDB Local inativo, porta errada ou rede Docker.
"Não é possível realizar operações em uma tabela inexistente" (DynamoDB Local) — Correção
O DynamoDB Local fornece a cada par de credenciais e região seu próprio banco de dados, portanto, uma tabela que você criou pode ficar invisível. Execute Local com -sharedDb para compartilhar um.
DynamoDB Local UnsupportedClassVersionError – Correção
DynamoDB Local 2.6.0 e mais recente precisa de Java 17 ou posterior. Em um JRE mais antigo, a JVM se recusa a carregá-lo. Instale um JDK atual ou execute a imagem do Docker.

Como isto é verificado

A documentação parafraseia a própria implementação, e a paráfrase se afasta dela. Toda mensagem de erro citada nestas páginas foi produzida executando a chamada que falha contra o serviço real do AWS DynamoDB e registrando o que voltou, caractere por caractere — não copiada da documentação da AWS.

Não o DynamoDB Local. O emulador é conveniente, mas a AWS não promete que ele redige os erros do mesmo jeito que o serviço — e, quando verificamos, mais da metade das mensagens dele era diferente. Onde a diferença vale a pena saber, a página mostra as duas.

As únicas edições são nas partes que descrevem a sua requisição, e não o erro: o nome da tabela e a cópia do seu payload que o serviço devolve. Um teste quebra o build se alguma página citar uma string que o serviço nunca retornou — ele existe porque uma das nossas próprias páginas citou uma mensagem inventada por meses antes de alguém rodar o código.

58 mensagens em 14 tipos de exceção: 55 capturadas no serviço real, 2 rejeitadas pelo SDK antes de a requisição ser enviada e 1 em que o próprio texto do DynamoDB Local é o assunto. 6 trazem uma nota sobre como o emulador redige a mesma falha.

Serviço real
Amazon DynamoDB (live service, us-east-1)
Emulador (para comparação)
DynamoDB Local (amazon/dynamodb-local)
SDK JavaScript
@aws-sdk/client-dynamodb 3.1096.0
SDK Python
boto3 1.43.81 on Python 3.14.7
Node.js
v24.20.0

Mais recursos de DynamoDB

Trabalhe com o DynamoDB sem o Console

Um cliente desktop rápido para DynamoDB que roda o SQL de verdade que o DynamoDB não consegue — JOINs, GROUP BY, agregações — com edição visual e um agente de IA com suas próprias chaves do Bedrock.

Teste grátis de 30 dias, sem cartão de crédito — depois o plano Grátis sem limite de tempo.