Skip to main content
idle · aws

Interface VPC endpoints that never processed 1 MiB in an hour across 30 days

resource types
1
rule IDs covered
1
severity
low

What does ZopNight detect here?

ZopNight flags an available Interface VPC endpoint whose `BytesProcessed` metric stays below 1 MiB at its hourly peak across 30 days of coverage. AWS bills every interface endpoint per hour in each Availability Zone it is provisioned in, so the saving is the hourly rate times the endpoint's network interfaces. ZopNight ships this check switched off by default.

Signal and threshold

How ZopNight evaluates Interface VPC endpoints that never processed 1 MiB in an hour across 30 days.
Field Value
Rule IDsRC-095
Categoryidle
Severitylow
MetricBytesProcessed
Thresholdhourly peak under 1 MiB processed
Evaluation window30d
SourceZopNight
Permissions usedec2:DescribeVpcEndpoints · cloudwatch:GetMetricStatistics

Every Availability Zone is a separate hourly charge

AWS PrivateLink pricing bills an interface endpoint for each hour it remains provisioned in each Availability Zone, irrespective of the state of its association with the service, and hourly billing stops only when you delete it. Data processing is added on top, starting at $0.01 per GB.

An endpoint deployed across three subnets for resilience is three hourly charges. Teams often add endpoints for services like ECR, STS or SSM when building a private VPC and keep them after the workloads move. Gateway endpoints for S3 and DynamoDB are a different product with no additional charge, so they are not part of this check.

Pulling endpoint traffic from CloudWatch

The AWS/PrivateLinkEndpoints namespace carries BytesProcessed, which the PrivateLink metrics page describes as bytes exchanged in both directions and billed to the endpoint owner:

Terminal window
aws ec2 describe-vpc-endpoints \
--filters Name=vpc-endpoint-type,Values=Interface \
--query 'VpcEndpoints[].[VpcEndpointId,VpcId,ServiceName,State]' --output table

Then open CloudWatch, choose the AWS/PrivateLinkEndpoints namespace and graph BytesProcessed for the endpoint’s VPC Endpoint Id dimension set over 30 days with the Sum statistic.

The three facts ZopNight needs

  1. The endpoint type is Interface and its state is available.
  2. BytesProcessed has 30 days of coverage and its highest hourly reading stays under 1 MiB, so a single busy hour rules the endpoint out.
  3. ZopNight can count the endpoint’s network interfaces, or failing that its subnets, and has an hourly per-interface rate for the Region.

Endpoints ZopNight will not price

Gateway and Gateway Load Balancer endpoints are skipped, as is any endpoint whose type is unknown. Less than 30 days of metric history, a missing metric, a missing interface and subnet count, or no rate means no finding; ZopNight will not show a card with a $0 figure. ZopNight ships this finding switched off by default, so it may not appear in your account.

Calculating the per-interface fee

Terminal window
saving = hourly rate per endpoint interface x number of interfaces (or subnets) x hours per month
cost after fix = 0

Data processing is left out because an idle endpoint processes almost nothing.

Removing the endpoint

  1. Confirm the 30-day BytesProcessed total in CloudWatch.
  2. Check which workloads in the VPC resolve the service’s private DNS name to this endpoint.
  3. Delete it with aws ec2 delete-vpc-endpoints --vpc-endpoint-ids vpce-0123456789abcdef0.
  4. Tidy the security groups that existed only for the endpoint.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

472 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

472 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·