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 = :statusda expressão, mas deixou:statusno 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
:vpara 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
:statenquanto o mapa declara:status.
Como corrigir
- Exclua o valor não utilizado os nomes das mensagens do
ExpressionAttributeValues. - Mantenha os valores em sincronia com a expressão — declare um
:placeholdersomente quando uma expressão fizer referência a ele. - Confirme nomes versus valores — os espaços reservados
:vão emExpressionAttributeValues; Os aliases do#vão paraExpressionAttributeNames. - Construa a expressão e seus mapas juntos para que nenhum valor fique pendente.
- Pesquise a string de expressão para cada
:keyem seu mapa. Um erro de digitação de um único caractere (:statvs: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
- Usando valores de atributos de expressão em DynamoDB (verificado em 13/07/2026)
- Exemplos de expressão de condição DynamoDB (verificado em 13/07/2026)
Erros relacionados
- Valor fornecido em ExpressionAttributeNames não utilizado em expressões — a mesma regra para aliases
#name. - ExpressionAttributeValues contém valor inválido — um valor malformado ou vazio no mapa e a incompatibilidade reversa: um
:placeholderreferenciado, mas nunca fornecido. - A expressão fornecida refere-se a um atributo que não existe no item — a expressão lê um atributo do item que não existe.
- Aprenda: Nomes e valores de expressões
Referências
- Usar valores de atributos de expressão no DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
- Exemplos de expressões de condição DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
- Consulta — Referência Amazon DynamoDB API
Última verificação em 13/07/2026 em relação à documentação oficial do AWS vinculada acima.