Valor fornecido em ExpressionAttributeValues não utilizado em expressões

TL;DR — Você forneceu um espaço reservado de valor em ExpressionAttributeValues (por exemplo, :status) ao qual nenhuma expressão faz referência. O DynamoDB exige que cada :value declarado seja usado em um KeyConditionExpression, FilterExpression, UpdateExpression ou ConditionExpression. Remova o valor órfão — ou corrija a expressão que deveria usá-lo.

O que significa

ValidationException: 1 validation error detected: Value provided in ExpressionAttributeValues unused in
expressions: keys: {:status}

# what the engine actually returns, reproduced against DynamoDB Local:
ValidationException: 1 validation error detected: Value provided in ExpressionAttributeValues unused in expressions: keys: {:status}

ExpressionAttributeValues é o mapa de substituição para os valores literais com os quais suas expressões são comparadas (:status, :min,…). DynamoDB impõe um contrato bidirecional: todo :placeholderusado em uma expressão deve ser declarado, **e** todo espaço reservado declarado deve ser usado. Um valor restante ao qual nenhuma expressão faz referência aciona este HTTP 400ValidationException` - no lado do cliente e não pode ser repetido até que os mapas correspondam.

Por que isso acontece

  • Um valor obsoleto após a edição da expressão — você eliminou #s = :status da expressão, mas deixou :status no mapa de valores.
  • Desvio de copiar e colar — reutilizando um mapa de valores de uma solicitação anterior que tinha mais condições que a atual.
  • Uma solicitação gerada que declara demais — um construtor adicionou :v para uma cláusula de filtro que foi removida posteriormente.
  • Uma confusão de nome x valor — você quis dizer #status (um alias de nome), mas declarou :status (um valor).
  • Um erro de digitação — a expressão usa :stat enquanto o mapa declara :status.

Como corrigir

  1. Exclua o valor não utilizado os nomes das mensagens do ExpressionAttributeValues.
  2. Mantenha os valores em sincronia com a expressão — declare um :placeholder somente quando uma expressão fizer referência a ele.
  3. Confirme nomes versus valores — os espaços reservados : vão em ExpressionAttributeValues; Os aliases do # vão para ExpressionAttributeNames.
  4. Construa a expressão e seus mapas juntos para que nenhum valor fique pendente.
  5. Pesquise a string de expressão para cada :key em seu mapa. Um erro de digitação de um único caractere (:stat vs :status) deixa o valor declarado sem uso.

Consulte no DynoTable

DynoTable gera ExpressionAttributeValues a partir das linhas de filtro que você configura — cada :placeholder na saída é referenciado na string de expressão. Abra uma tabela com ⌘K, adicione filtros no painel de consulta e copie os mapas emitidos em sua chamada do SDK para eliminar valores órfãos.

Ao depurar uma solicitação com falha, cole a expressão no Expression Builder e compare seu mapa de valores com o seu. Troca de perfil (⌘P) e Testar conexão em Configurações → Perfis confirmam que você está testando na mesma tabela. Consulte Conectar ao AWS e Instalar.

Fontes

Erros relacionados

Referências

Última verificação em 13/07/2026 em relação à documentação oficial do AWS vinculada acima.

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.