"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 tempoSelect: COUNT permaneceu no lugar enquanto um ProjectionExpression foi adicionado (ou vice-versa).
  • AttributesToGet legado combinado com Select: 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 o COUNT também devolva os itens que contou.

Como corrigir

  1. Só contando? Solte a projeção. Defina Select: COUNT e remova ProjectionExpression/AttributesToGet.
  2. Precisa de atributos específicos? Solte o Select: COUNT. Forneça um ProjectionExpression; DynamoDB padroniza Select para SPECIFIC_ATTRIBUTES, então você normalmente não configura Select.
  3. Precisa da contagem e dos itens? Faça uma chamada para os itens (com sua projeção) e leia seu Count ou faça uma chamada Select: COUNT separada.
  4. Prefira ProjectionExpression a AttributesToGet — AWS marca AttributesToGet como um parâmetro legado e recomenda ProjectionExpression.

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

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.