"Cannot Specify AttributesToGet When Select Is COUNT": projeção com Select COUNT
TL;DR — Seu Query/Scan configura Select: COUNT e um ProjectionExpression (ou o AttributesToGet legado). O COUNT retorna apenas o número de itens correspondentes, nunca os itens em si, portanto, nomear os atributos a serem retornados é contraditório - o DynamoDB o rejeita. Escolha um: Select: COUNT sem projeção ou uma projeção com Select: SPECIFIC_ATTRIBUTES (o padrão quando você fornece um ProjectionExpression).
O que significa
ValidationException: 1 validation error detected: Cannot specify the AttributesToGet when choosing to get only the Count
# what the engine actually returns, reproduced against DynamoDB Local:
ValidationException: 1 validation error detected: Cannot specify the ProjectionExpression when choosing to get only the Count(Essa é a mensagem com o parâmetro legado AttributesToGet; com ProjectionExpression o texto é diferente, mas a regra é a mesma.) Select controla o que uma leitura retorna. COUNT pede ao DynamoDB uma contagem (Count/ScannedCount) e nenhum dado do item. Um ProjectionExpression/AttributesToGet solicita atributos específicos de itens retornados. Esses dois são mutuamente exclusivos - a referência do Query API explica: "Se você usar o parâmetro ProjectionExpression, o valor para Select só poderá ser SPECIFIC_ATTRIBUTES. Qualquer outro valor para Select retornará um erro." Uma observação sobre custos: o COUNT ainda consome a mesma capacidade de leitura que realmente busca os itens – ele economiza largura de banda, não RCUs.
Por que isso acontece
- Ambos os parâmetros definidos ao mesmo tempo —
Select: COUNTpermaneceu no lugar enquanto umProjectionExpressionfoi adicionado (ou vice-versa). AttributesToGetlegado combinado comSelect: COUNT.- Um construtor de consultas que sempre anexa uma projeção, mesmo quando o chamador deseja apenas uma contagem.
- Mal-entendido do
Select— esperando que oCOUNTtambém devolva os itens que contou.
Como corrigir
- Só contando? Solte a projeção. Defina
Select: COUNTe removaProjectionExpression/AttributesToGet. - Precisa de atributos específicos? Solte o
Select: COUNT. Forneça umProjectionExpression; DynamoDB padronizaSelectparaSPECIFIC_ATTRIBUTES, então você normalmente não configuraSelect. - Precisa da contagem e dos itens? Faça uma chamada para os itens (com sua projeção) e leia seu
Countou faça uma chamadaSelect: COUNTseparada. - Prefira
ProjectionExpressionaAttributesToGet— AWS marcaAttributesToGetcomo um parâmetro legado e recomendaProjectionExpression.
Abra no DynoTable
O painel de consulta do DynoTable separa o modo de contagem da projeção – você busca itens com atributos selecionados ou lê a contagem correspondente, nunca ambos em uma solicitação conflitante. Abra uma tabela com ⌘K, execute uma consulta e verifique a contagem de resultados na barra de status sem anexar um ProjectionExpression.
Use o Query Builder para gerar uma solicitação somente de projeção ou somente contagem para seu código SDK. Alternar perfis com ⌘P; configure-os em Configurações → Perfis com Conexão de teste. Consulte Conectar ao AWS e Instalar.
Fontes
- Consulta — Referência Amazon DynamoDB API (verificado em 13/07/2026)
- AttributesToGet (legado) (verificado em 13/07/2026)
Erros relacionados
- Não é possível usar parâmetros de expressão e não expressão — misturando parâmetros legados e de expressão.
- Condição de chave de consulta não suportada — uma condição de chave malformada na mesma solicitação.
- Aprenda: Contagem, soma e agregação · Expressões de projeção
Referências
- Consulta — Referência Amazon DynamoDB API
- Digitalizar - Referência Amazon DynamoDB API
- AttributesToGet (legado) — Guia do desenvolvedor do Amazon DynamoDB
- Tratamento de erros com DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
Última verificação em 13/07/2026 em relação à documentação oficial do AWS vinculada acima.