DynamoDB LimitExceededException

TL;DR — Você emitiu muitas operações de control-plane de uma vez (ou atingiu o limite table/account). Até 500 tabelas e índices podem estar no estado CREATING/UPDATING/DELETING em sua conta ao mesmo tempo. Serialize suas operações de tabela, aguarde ACTIVE e tente novamente com espera.

O que significa

LimitExceededException: Too many operations for a given subscriber.

Este é um erro de control-plane — ele vem de CreateTable, UpdateTable, DeleteTable, criação de índice, restaurações e chamadas semelhantes, não de GetItem/PutItem/Query. DynamoDB está informando que você excedeu um limite de simultaneidade ou de conta. É um HTTP 400 e o AWS o lista como OK para tentar novamente – a condição é eliminada quando as operações em andamento terminam.

Por que isso acontece

  • Muitas operações simultâneas de table/index — o número cumulativo de tabelas e índices no estado CREATING, DELETING ou UPDATING não pode exceder 500 por conta/região. (São permitidas até 500 operações de tabela simultâneas por conta — CreateTable, UpdateTable, DeleteTable, UpdateTimeToLive, RestoreTableFromBackup, RestoreTableToPointInTime — e apenas até 250 solicitações simultâneas ao criar tabelas com índices secundários.)
  • Implantações de pilha em massa — CloudFormation/CDK/Terraform criar ou destruir muitas tabelas (ou muitos GSIs) simultaneamente excede o orçamento de simultaneidade.
  • Cotas de recursos da conta — atingindo a cota flexível de 2.500 tabelas por conta/região ou o limite de 50 trabalhos de importação simultâneos.
  • Uso indevido de streams DynamoDB — chamando GetRecords com um Limit maior que 1.000 ou mais de 2 processos lendo o mesmo fragmento de streams ao mesmo tempo.
  • Nota: um segundo UpdateTable emitido enquanto a mesma tabela ainda é UPDATING aparece como ResourceInUseException, não este erro - mas ambos significam "aguarde pelo ACTIVE primeiro".

Como corrigir

  1. Serializar operações do control-plane — espere que uma tabela (e cada GSI) se torne ACTIVE antes de emitir a próxima alteração nela. Enquete DescribeTable e portão em TableStatus === 'ACTIVE'.
  2. Tentar novamente com espera exponencial — o limite é transitório; uma nova tentativa geralmente é bem-sucedida quando as operações em voo são esgotadas.
  3. Acelere implantações em massa — divida uma pilha grande para não criar centenas de tabelas/GSIs de uma vez ou adicione ordenação DependsOn explícita para que não sejam disparadas todas juntas.
  4. Verifique suas cotas de serviço — se você estiver próximo do limite de tabelas por conta, solicite um aumento de cota nas cotas de serviço em vez de tentar novamente.
  5. Adicione GSIs um de cada vez — você pode criar ou excluir apenas um índice secundário global por operação UpdateTable, portanto serialize as alterações de índice e aguarde cada preenchimento.

FAQ

Como faço para corrigir LimitExceededException em DynamoDB? Pare de emitir operações de control-plane (alterações CreateTable/UpdateTable/DeleteTable/index) em paralelo. Aguarde até que cada tabela e índice cheguem a ACTIVE antes da próxima alteração, mantenha a contagem de tabelas em CREATING/UPDATING/DELETING abaixo do limite da conta e tente novamente com espera exponencial.

LimitExceededException é um erro de limitação? É um erro de simultaneidade/limit do control-plane, não uma limitação do data-plane. A limitação do data-plane surge como ProvisionedThroughputExceededException, ThrottlingException ou RequestLimitExceeded.

Aponte o DynoTable para o Local

DynoTable é um cliente de data-plane – GetItem, Query e Scan não consomem o orçamento de simultaneidade do control-plane que esse erro protege. Se um script de implantação for atingido LimitExceededException ao criar tabelas, use DynoTable para navegar nas tabelas que já atingiu ACTIVE e valide o esquema em Configurações da tabela enquanto suas novas tentativas de IaC. Para pilhas locais, execute DynamoDB Local com -sharedDb e conectar através de um perfil local (Running DynamoDB Local) para você pode inspecionar implantações parciais sem esperar que cada GSI termine no AWS. O planejador de design de tabela única ajuda a esboçar formas de tabela antes de disparar outro CreateTable em uma conta ocupada.

Erros relacionados

Fontes

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.