Real-time SageMaker endpoints that served zero invocations in 7 days
What does ZopNight detect here?
ZopNight flags an in-service, single-variant SageMaker real-time endpoint whose `Invocations` metric shows no requests at all over the last 7 days, with `CPUUtilization` proving the endpoint was monitored. Real-time endpoints bill for their instances around the clock, so the saving is the endpoint's full monthly cost.
Signal and threshold
| Field | Value |
|---|---|
| Rule IDs | RC-1613 |
| Category | idle |
| Severity | high |
| Metric | Invocations |
| Threshold | 0 invocations (average and peak) |
| Evaluation window | 7d |
| Source | ZopNight |
| Permissions used | sagemaker:ListEndpoints · sagemaker:DescribeEndpoint · cloudwatch:GetMetricStatistics |
Where it applies
A real-time endpoint bills for instances, not for requests
A SageMaker real-time endpoint runs on ML instances that you choose when you create the endpoint
configuration. Those instances stay provisioned for as long as the endpoint exists, whether or not
anything calls InvokeEndpoint. The SageMaker guide on
deleting endpoints and resources
puts it plainly: delete endpoints to stop incurring charges.
That makes an endpoint left over from an experiment or a replaced model one of the more expensive
things to forget in an ML account. Nothing about it looks broken; it sits InService and waits.
Checking invocation traffic yourself
List the endpoints that are serving, then pull a week of the Invocations metric for each one.
SageMaker publishes it in the AWS/SageMaker namespace with the EndpointName and VariantName
dimensions, and the
endpoint metrics reference
recommends the Sum statistic for total requests:
aws sagemaker list-endpoints --status-equals InService \ --query 'Endpoints[].EndpointName' --output text
aws cloudwatch get-metric-statistics \ --namespace AWS/SageMaker --metric-name Invocations \ --dimensions Name=EndpointName,Value=my-endpoint Name=VariantName,Value=AllTraffic \ --start-time 2026-09-18T00:00:00Z --end-time 2026-09-25T00:00:00Z \ --period 86400 --statistics SumAn empty result or a column of zeros means no caller reached the variant that week. Run
aws sagemaker describe-endpoint --endpoint-name my-endpoint to see the variant names.
Every condition that has to hold
- The endpoint is a real-time endpoint in the
InServicestate. - It has exactly one production variant. With two or more variants, one quiet variant does not prove the endpoint is idle, so ZopNight leaves it alone.
- There is telemetry to trust: an
Invocationsseries or aCPUUtilizationseries, either one carrying at least 7 days of coverage. The CPU series is what lets ZopNight read a missing invocation series as genuine silence rather than a gap in collection. - Over the 7-day window, invocations are absent or read zero on both the average and the peak. A single request anywhere in the week is enough to stop the finding.
- The endpoint has a positive monthly cost in ZopNight’s pricing data.
Endpoints left out on purpose
Serverless endpoints bill per inference and asynchronous endpoints can scale to zero, so neither is in scope. An endpoint covered by a Savings Plan or reservation gets no finding, because deleting it does not stop the committed spend. Endpoints with some traffic, just not much, belong to SageMaker Endpoint Low Invocations, and failed or out-of-service endpoints belong to Idle SageMaker Resource.
The saving is the whole endpoint
saving = endpoint monthly costcost after fix = 0With no price available, ZopNight reports nothing rather than a $0 figure.
Removing an endpoint nobody calls
- Check the application and pipeline configs that could hold the endpoint name, and confirm the
Invocationshistory over a longer window than a week. - If the model must stay deployable for occasional use, move it to a serverless endpoint, which is built for workloads with idle periods between bursts.
- Otherwise delete it with
aws sagemaker delete-endpoint --endpoint-name my-endpoint. - Remove the endpoint configuration and model with
delete-endpoint-configanddelete-modelif nothing else uses them.