networking

VPC Endpoint

A private path from inside your VPC to a specific AWS service — no internet, no NAT gateway. Here's when to use a gateway vs. an interface endpoint, what each costs, what it connects to, and the mistakes Design Beaver catches as you draw.

Updated July 12, 2026

What VPC Endpoint is

A VPC endpoint gives resources inside your VPC a private path to a supported AWS service, so the traffic never touches the public internet, an internet gateway, or a NAT gateway. There are two forms. An interface endpoint is an elastic network interface with a private IP placed in your subnet, powered by AWS PrivateLink, and it covers most services. A gateway endpoint is a target you add to a subnet’s route table — available for S3 and DynamoDB only, not PrivateLink, and free.

Design Beaver models a VPC endpoint as a VPC-resident resource that lives inside a subnet, and validates as you draw which services it can front and how each connection has to be set up to be correct.

When to use VPC Endpoint (and when not to)

Reach for a VPC endpoint when a private subnet needs to reach a specific set of AWS services and you want that traffic to stay on the AWS backbone rather than route out through a NAT gateway. It’s the right tool for removing a NAT gateway’s per-GB data-processing cost on high-volume S3 or DynamoDB traffic — use a gateway endpoint there. It’s also the answer when security or compliance requires access to a given service over a private IP that never traverses the public internet.

Don’t reach for it when the resource needs general outbound access to arbitrary external hosts — that’s a NAT gateway, and an endpoint only reaches the service it fronts. It’s also the wrong choice when the target service offers neither a gateway endpoint nor an interface endpoint, since not every AWS service has one. And for very low-volume access where a shared NAT gateway already exists, a single interface endpoint’s per-AZ hourly cost may not be worth it.

Variants: gateway vs. interface

The gateway-vs-interface choice is the defining decision here, and it’s the one Design Beaver’s private-subnet-egress rule reads. The short version: for in-VPC access to S3 or DynamoDB use the free gateway endpoint; everything else — and cross-network S3 or DynamoDB access — uses an interface endpoint.

OptionWhat it is
Interface endpoint (PrivateLink)defaultAn elastic network interface with a private IP placed in your subnet(s), powered by AWS PrivateLink. Used for most services — SNS, SQS, SES, Lambda, KMS, Secrets Manager, the EC2/ECS APIs, and PrivateLink partner or self-hosted services — and also available for S3 and DynamoDB when access is needed from on-premises or another Region. Billed per hour per AZ plus per GB processed.
Gateway endpointA target you add to a subnet's route table, available only for Amazon S3 and DynamoDB, and not powered by PrivateLink. No elastic network interface and no hourly or per-GB charge — but it can't be reached from on-premises, a peered VPC in another Region, or through a transit gateway (use an interface endpoint for those).

VPC Endpoint pricing

The two forms sit at opposite ends of the cost picture: gateway endpoints are free, and interface endpoints bill per AZ-hour plus per GB processed. That’s why the endpoint type you pick matters as much for the bill as for the network path.

Gateway endpoints (S3, DynamoDB) are free — no hourly or data-processing charge. Interface endpoints (PrivateLink) bill per hour for each endpoint in each Availability Zone it's provisioned in (each partial hour billed as a full hour), plus a per-GB data-processing charge. Running an interface endpoint across multiple AZs for resilience multiplies the hourly component.

OptionRepresentative rate
gatewayFree — no hourly or per-GB charge for S3/DynamoDB gateway endpoints
interface~$0.01 per endpoint per AZ-hour plus ~$0.01 per GB processed (per aws.amazon.com/privatelink/pricing/, us-east-1; tiered by volume)

Keeping the bill down

  • Always use the free gateway endpoint for S3 and DynamoDB when access is from inside the VPC, rather than an interface endpoint or NAT-gateway data processing
  • Only provision interface endpoints in the AZs you actually serve traffic from — each AZ adds an hourly charge
  • Weigh a shared interface endpoint's fixed hourly cost against per-GB NAT-gateway data processing for the same service; the endpoint wins as volume grows

us-east-1 (rates vary by region). Rates as of 2026-07. Verify at the official pricing page before using for real cost estimates — this list is not kept in sync with AWS pricing changes.

How VPC Endpoint connects to other services

An endpoint’s whole job is to be the private path to a specific AWS service, so its connections are the services it fronts — a gateway endpoint for S3 and DynamoDB, an interface endpoint for SQS, SNS, SES, and Lambda. Each edge has a requirement that makes it actually work, and Design Beaver models them so it knows what belongs on each connection.

  • S3

    A gateway VPC endpoint gives private-subnet resources backbone access to Amazon S3 with no NAT gateway and no per-GB data-processing charge

  • A gateway VPC endpoint gives private-subnet resources backbone access to DynamoDB with no NAT gateway and no per-GB charge

  • SQS

    An interface VPC endpoint (PrivateLink) lets a private-subnet producer/consumer reach Amazon SQS privately, without a NAT gateway

  • SNS

    An interface VPC endpoint lets a private-subnet publisher reach Amazon SNS privately

  • SES

    An interface VPC endpoint lets a private-subnet application call Amazon SES privately instead of over a NAT gateway

  • An interface VPC endpoint lets a private-subnet resource invoke the Lambda API privately

What VPC Endpoint can’t connect to

Some edges look reasonable on a canvas but don’t exist in AWS. Design Beaver flags them instead of letting you draw a diagram that can’t be built.

  • Internet

    A VPC endpoint provides private connectivity to a specific supported AWS service (or PrivateLink service), not general egress to arbitrary internet destinations. For outbound access to the public internet, use a NAT gateway — an endpoint can't reach hosts it doesn't front.

  • RDS

    RDS is reached over ordinary same-VPC private networking (security-group rules from the app tier), not through a VPC endpoint — there's no interface/gateway endpoint that fronts a customer RDS instance.

Anti-patterns Design Beaver catches

These are the endpoint mistakes that pass a diagram review but cost you money or silently fail in production — the ones the validation engine flags as you draw.

Creating an interface endpoint for S3 or DynamoDB by default when access is only from inside the VPC

Why it breaksInterface endpoints bill per hour per AZ plus per GB, whereas the gateway endpoint for S3/DynamoDB is free — defaulting to interface pays for something the gateway endpoint does at no cost for in-VPC access

Do this insteadUse a gateway endpoint for S3 and DynamoDB for in-VPC access; reserve the interface endpoint for the cases that need it (access from on-premises over Direct Connect/VPN, or from a peered VPC in another Region)

Adding an interface endpoint but leaving Private DNS disabled and the security group closed

Why it breaksWithout Private DNS the service's default hostname still resolves to the public endpoint (so traffic doesn't use the endpoint), and without an inbound HTTPS rule the client can't reach the endpoint's ENI at all

Do this insteadEnable Private DNS on the interface endpoint and allow inbound TCP 443 from the client resources' security group

Expecting a VPC endpoint to replace a NAT gateway for all outbound traffic

Why it breaksEndpoints only reach the specific services they front; a private tier that also calls third-party APIs or downloads OS packages still has no internet path

Do this insteadUse VPC endpoints for the AWS services you access privately, and keep a NAT gateway for general outbound internet access when it's actually needed

Gotchas that bite in production

  • S3 and DynamoDB support both endpoint types. The free gateway endpoint is the usual choice for in-VPC access, but an interface endpoint also exists for them — needed when access comes from on-premises, a peered VPC in another Region, or through a transit gateway, which a gateway endpoint can’t serve.
  • An endpoint reaches one service, not the internet. It’s not a NAT-gateway replacement for a tier that also calls third-party APIs or downloads OS packages.
  • An interface endpoint needs Private DNS and inbound 443. Without Private DNS, the service’s normal hostname still resolves to the public endpoint and your traffic quietly ignores the endpoint you’re paying for. Without an inbound TCP 443 rule from your clients, they can’t reach the endpoint’s network interface at all.
  • A gateway endpoint’s “connection” is a route-table entry. If the subnet’s route table doesn’t reference it, nothing uses it. It also isn’t PrivateLink, so it doesn’t get a private IP or ENI the way an interface endpoint does.

Further reading

Frequently asked questions

When should you use a VPC endpoint?
Use one when a private subnet needs to reach a specific AWS service and you want that traffic to stay on the AWS backbone instead of routing out through a NAT gateway — for example a private EC2 or Lambda tier calling SQS, SNS, SES, or Lambda. It's also the right choice when compliance requires access to a service over a private IP that never touches the public internet. It's the wrong choice for general outbound internet access to arbitrary hosts — that's a NAT gateway's job.
Should you use a gateway or interface endpoint for S3 and DynamoDB?
Use the free gateway endpoint for in-VPC access to S3 and DynamoDB — it's a route-table entry with no hourly or per-GB charge. Reach for the interface endpoint only when access comes from on-premises, a peered VPC in another Region, or through a transit gateway, which a gateway endpoint can't serve. Defaulting to an interface endpoint for plain in-VPC access pays for something the gateway endpoint does for free.
How much does a VPC endpoint cost?
Gateway endpoints for S3 and DynamoDB are free — no hourly and no per-GB charge. Interface endpoints (PrivateLink) bill per hour for each Availability Zone the endpoint runs in, plus a per-GB data-processing charge, so running one across multiple AZs multiplies the hourly cost. Verify current rates on the official pricing page before estimating a real bill.
Can a VPC endpoint replace a NAT gateway?
No. An endpoint reaches only the specific service it fronts, not the open internet. A private tier that also calls third-party APIs or downloads OS packages still needs a NAT gateway. Use endpoints for the AWS services you access privately, and keep the NAT gateway for genuine internet access.
Can a VPC endpoint connect to RDS?
No. RDS is reached over ordinary same-VPC private networking with security-group rules from the app tier — there's no interface or gateway endpoint that fronts a customer RDS instance. Design Beaver flags a VPC endpoint → RDS edge as invalid.

Validate your VPC Endpoint architecture as you draw

Design Beaver checks your AWS design in real time — missing queues, invalid connections, and security anti-patterns, caught before you ship. It’s live in beta, free, and runs in your browser with no account.

Open the app →

Prefer email? Get new features in your inbox:

← All supported services