No-commitment Bedrock Provisioned Throughput with zero invocations in 30 days
What does ZopNight detect here?
ZopNight flags Amazon Bedrock Provisioned Throughput purchased with no commitment term that recorded no `Invocations` in the `AWS/Bedrock` namespace over 30 days. Provisioned Throughput bills hourly per Model Unit whether or not it is used, and a no-commitment purchase can be deleted at any time, so the saving is the full monthly cost.
Signal and threshold
| Field | Value |
|---|---|
| Rule IDs | RC-1601 |
| Category | idle |
| Severity | high |
| Metric | Invocations |
| Threshold | zero invocations, no commitment |
| Evaluation window | 30d |
| Source | ZopNight |
| Permissions used | bedrock:ListProvisionedModelThroughputs · bedrock:GetProvisionedModelThroughput · cloudwatch:GetMetricStatistics |
Provisioned Throughput is an hourly bill for reserved model capacity
Provisioned Throughput buys a fixed level of throughput for a model, measured in Model Units, at a fixed cost billed hourly. The hourly price depends on the model, the number of Model Units and the commitment term: no commitment, one month or six months, with longer terms discounted. For models you have customized, AWS requires Provisioned Throughput before the model can be used at all.
The bill runs whether requests arrive or not. A Provisioned Throughput created for a proof of concept, or left behind after an application moved to on-demand inference, keeps charging every hour for capacity nobody uses.
Listing Provisioned Throughput and checking for traffic
aws bedrock list-provisioned-model-throughputs --status-equals InService \ --query 'provisionedModelSummaries[].[provisionedModelName,modelUnits,commitmentDuration]'
aws cloudwatch get-metric-statistics --namespace AWS/Bedrock --metric-name Invocations \ --dimensions Name=ModelId,Value=<provisioned-model-arn> \ --start-time 2026-08-26T00:00:00Z --end-time 2026-09-25T00:00:00Z \ --period 86400 --statistics SumNo datapoints at all over 30 days is the typical picture for an unused one.
What makes one idle in ZopNight’s eyes
- The
Invocationsseries for the Provisioned Throughput shows no activity over 30 days, or there is no series for it at all. For a Provisioned Throughput that ZopNight can see, a missing invocation series is read as zero activity. - No commitment term is set on the purchase.
- ZopNight has a positive monthly cost for it.
Cases that are excluded
A Provisioned Throughput on a one-month or six-month commitment is never flagged here. AWS does not allow deleting a Model Unit commitment before its term ends, so the charge cannot be recovered early; the right time to act is before it renews, since AWS renews commitments automatically at the end of each term. If ZopNight could not fetch metrics for the account in this run, it raises nothing rather than declare every Provisioned Throughput idle. Throughput that is used but oversized belongs to Bedrock Provisioned Throughput Underutilized.
The full cost comes back on deletion
monthly cost = Model Units x hourly rate x 730saving = monthly cost (nothing is left running after deletion)Retiring idle Provisioned Throughput
- Confirm no application invokes the provisioned model ARN.
- If the model is a base model with on-demand access, point any remaining sporadic traffic at on-demand inference instead.
- Delete it:
aws bedrock delete-provisioned-model-throughput --provisioned-model-id <provisioned-model-arn> - For Model Unit purchases with a commitment, delete them as soon as the term ends: AWS renews the term automatically, and its cancel auto renew option applies only to Provisioned Throughput by Tokens.