Host your own email and enhance your privacy
Fired by Prometheus rule LambdaThrottles — any throttled invocations on a cabal-* function in the last 5 min.
A Lambda invocation was rejected because the function’s reserved concurrency (or the account-level concurrency limit) was already saturated. Each throttled invocation is a user request that didn’t run.
The label function_name identifies the function. For most cabal-* functions throttling shows up as failed admin-app calls (slow or 5xx). Throttling on cognito-counter (post-confirmation trigger) blocks new sign-ups for the duration.
aws cloudwatch get-metric-statistics --namespace AWS/Lambda --metric-name Invocations \
--dimensions Name=FunctionName,Value=<fn> \
--start-time $(date -u -v-1H +%FT%TZ) --end-time $(date -u +%FT%TZ) \
--period 60 --statistics Sum
A 10× spike vs baseline points to a load issue (or a runaway client). Flat baseline + throttling means concurrency was reduced.
aws lambda get-function-concurrency --function-name <fn>
Cabalmail Lambdas don’t normally set reserved concurrency — if a value is present, somebody set it deliberately or Terraform regressed. Check the recent commit to the call module.
ConcurrentExecutions against the account limit (default 1000):
aws service-quotas get-service-quota --service-code lambda --quota-code L-B99A9384
At <70% of limit this is the function’s problem; >70% means a noisy neighbor.
warning severity — ntfy only, no Pushover. If throttling is sustained for >30 min and converting to user-visible 5xx, Lambda5xxSpike will escalate to critical.