Estimate Secrets Manager API calls per month (GetSecretValue volume)
For Secrets Manager, the biggest budget surprises come from API request volume (often GetSecretValue). The goal is to estimate a defendable baseline and a peak scenario. Start with measurement if you can; otherwise model from runtime behavior (starts, churn, retries) and validate later.
Method 1: measure and scale (best)
- Pick a representative window (7–30 days).
- Count Secrets Manager API calls (total and by operation if possible).
- Scale to monthly: calls/month ≈ calls/window × (30 / days in window).
- Split by environment (prod vs non-prod) because churn patterns differ.
If you only have peak/incident data, don’t use it as your baseline—store it as a separate peak scenario.
Method 2: model from runtime behavior (good when you can’t measure yet)
In many systems, Secrets Manager calls happen at process start. That means you can model calls from starts/month:
- Starts/month ≈ avg running instances × restarts per instance per month
- Calls/start ≈ secrets fetched per start (often multiple secrets)
- Calls/month ≈ starts/month × calls/start
How to estimate “starts/month” in common platforms
- Kubernetes: pods/day × (restarts + deploy rollouts) × containers fetching secrets
- ECS: task launches/day × secrets per task definition (plus redeploy churn)
- Lambda: cold starts roughly track concurrency and traffic burstiness (don’t assume one start/day)
A common multiplier: a single pod may have multiple containers, each fetching the same secrets.
Add the two multipliers that make budgets wrong
- Retry multiplier: timeouts and transient errors can trigger repeated fetches.
- Hot-path fetch multiplier (avoid): if secrets are fetched per request/job iteration, calls scale with traffic.
If you suspect hot-path fetch, estimate calls as (app requests × secrets fetches per request) and treat it as a red flag to fix.
Worked example (structure)
- Average running pods: 200
- Pod restarts + deploy rollouts: 3 starts/pod/month
- Secrets fetched per start: 4
- Baseline calls/month ≈ 200 × 3 × 4 = 2,400 calls/month
- Peak scenario: incident causes 5× restart churn → 12,000 calls/month equivalent for that period
Turn calls into cost
Use the Secrets Manager cost calculator with secrets/month and calls/month (and your $ per 10k pricing).
How to validate and attribute (so you can fix the real driver)
- Use CloudTrail event history to find top callers and operations (GetSecretValue dominates in many systems).
- Compare “calls per start” across services; one misconfigured service often dominates total calls.
- Re-check deploy/incident windows; retries and restarts are common spike explanations.
Next steps
Sources
- AWS Secrets Manager pricing
- Retrieving secrets (API usage context)
- CloudTrail event reference (for attribution workflow)