Built-in limits¶
The defaults sit at or just below each provider's documented limits, so they bind only where the provider would throttle anyway. They live in BUILTIN_LIMITS in cloudg/resilience/limiter.py, with the same sources in comments.
| Provider | Bucket | Rate (rps) | Burst | Source and reasoning |
|---|---|---|---|---|
| AWS | default leaf, per account x region x service | 20 | 40 | general default |
| AWS | ec2, one bucket per API action |
20 | 100 | EC2 non-mutating actions: bucket capacity 100, refill 20/s, per action, per account and region (EC2 API throttling) |
| AWS | sts |
50 | 100 | STS default quota is 600 RPS per account and region; cloudg stays far below it (IAM and STS quotas) |
| AWS | lambda |
15 | 15 | "Rate of control plane API requests" quota, 15/s (Lambda quotas) |
| AWS | route53 |
5 | 5 | five requests per second per account (Route 53 limits) |
| AWS | resourcegroupstaggingapi |
5 | 10 | GetResources has a low per-account TPS quota; about 10 TPS is commonly observed, there is no published figure, cloudg uses half (GetResources) |
| AWS | organizations, cloudformation, cloudcontrol |
5 | 10 | no published TPS, throttle early; conservative |
| AWS | controltower |
2 | 5 | same |
| AWS | iam |
10 | 40 | same |
| AWS | account, provider-wide | off | ||
| Azure | subscription (account bucket) | 20 | 200 | ARM subscription reads: 250-token bucket refilled at 25/s, per region per principal; 20% headroom (ARM throttling) |
| Azure | default leaf, per subscription x resource provider | 15 | 100 | general default |
| Azure | network |
30 | 200 | Microsoft.Network reads: 10,000 per 5 minutes |
| Azure | storage |
0.33 | 20 | Storage resource provider list operations: 100 per 5 minutes |
| Azure | resourcegraph, per user |
3 | 15 | 15 queries per 5-second window per user (Resource Graph throttling) |
| GCP | default leaf, per project or organization x API | 10 | 20 | general default |
| GCP | cloudasset.ListAssets |
1.5 | 10 | 100 requests per minute per consumer project, 800 per minute per organization (Asset Inventory quotas) |
| GCP | cloudasset.SearchAllResources, cloudasset.SearchAllIamPolicies |
6 | 20 | 400 requests per minute per consumer project (same page) |
Other defaults:
| Setting | AWS | Azure | GCP |
|---|---|---|---|
Adaptive floor (min_rps) |
0.2 | 0.1 | 0.05 |
In-flight requests per account (max_concurrency) |
128 | 16 | 16 |
| Breaker threshold / cooldown | 5 / 60 s | 5 / 60 s | 5 / 60 s |
max_retries / max_backoff_seconds / deadline_seconds |
8 / 60 s / 900 s | same | same |
| Retry budget | 500 | 500 | 500 |
| SDK retries | botocore: aws.retry_mode adaptive, aws.max_retries 10 |
azure-core RetryPolicy: 8 total and status retries, 900 s timeout |
api_core Retry: 900 s timeout, at most 8 consecutive retries per page |
Live operation guard: 120-second cooldown per scope, one live operation per scope, two overall, no per-caller quota, a one-hour operation timeout (section 7).