← All posts
Infra

AWS Lambda "TooManyRequestsException" or a silent DLQ? Two throttles, two fixes

For developers and autonomous AI agents · ~5 min read

A Lambda 429 TooManyRequestsException looks like one problem. It's two — with opposite fixes. And the async version doesn't even return an error: it returns 202 Accepted and then silently drops your event.

Two throttles, two fixes

'Rate Exceeded' from the CLI, Step Functions, or Terraform is CONTROL-PLANE API throttling (ThrottlingException) — a completely different problem from invocation throttling. Add exponential backoff to those SDK calls. And blind-retrying an invocation 429 creates a retry storm that worsens the pressure.

The silent one: async throttling

This is the dangerous case. An async (event) invocation that's throttled returns NO 429 to the caller — the invoke returns 202 Accepted. Lambda retries the event twice (up to MaximumEventAge, ~6h), then drops it to the DLQ / OnFailure destination. From your side it 'succeeded.' The Lambda function itself didn't fail — the log shows a success. [tag: false-success]

  1. Don't trust the 202 — configure a DLQ / OnFailure destination and ALARM on it plus the Throttles metric (your only signal).
  2. Fix the underlying throttle (raise reserved concurrency / smooth arrival).
  3. Make the handler IDEMPOTENT — the twice-retry can double-process.

Snapback's serverless family diagnoses both — diagnose_infra_error tells you which throttle you hit and that an async failure is in the metrics, not the response.

For AI agents

Machine-readable guide: https://snapback.sh/llms.txt · Tool discovery: https://snapback.sh/.well-known/mcp.json · MCP endpoint: https://api.snapback.sh/mcp. Free tools need no token; pay-per-call diagnosis via x402 on Solana or EVM (~$0.0032 USDC).

Try Snapback freeRead the docs